HxUtils: 批量转换换行符,print2to3
在 windows 和 linux 系统,换行符有时需要转换,其代码文件 HxUntils.py 如下:
''' HxUtils.py 2018 by x01 ''' import os, sys def convert_endlines(filepath, tounix=True):
try:
oldfile = open(filepath, 'rb+')
path, name = os.path.split(filepath)
newfile = open(path + '$' + name, 'ba+') old = b'\r'
new = b''
if not tounix:
old = b'\n'
new = b'\r\n' while True:
olddata = oldfile.read(1024)
newdata = olddata.replace(old, new)
newfile.write(newdata)
if len(olddata) < 1024:
break newfile.close()
oldfile.close() os.remove(filepath)
os.rename(path + '$' + name, filepath) except IOError as e:
print(e) def convert_endlines_for_dir():
dirpath, tounix, extname = ('.', True, '.py')
if len(sys.argv) == 2:
dirpath = sys.argv[1]
elif len(sys.argv) == 3:
dirpath, tounix = (sys.argv[1], sys.argv[2])
elif len(sys.argv) == 4:
dirpath, tounix, extname = (sys.argv[1], sys.argv[2], sys.argv[3]) for (thisdir, subshere, fileshere) in os.walk(dirpath):
for filename in fileshere:
if filename.endswith(extname):
#print(os.path.join(thisdir,filename))
convert_endlines(os.path.join(thisdir,filename), tounix) if __name__ == '__main__':
convert_endlines_for_dir()
使用方法如下:
$ python3 HxUntils.py [dirpath tounix extname]
python2 的 print 命令替换为 python3 的 print() 函数:
def convert_print(dirpath='.'):
'''
转换 python2 中的 print 命令到 python3
'''
if len(sys.argv) == 2:
dirpath = sys.argv[1] for (thisdir, subshere, fileshere) in os.walk(dirpath):
for filename in fileshere:
if filename.endswith('.py'):
print2to3(os.path.join(thisdir,filename)) def print2to3(filename):
fr = open(filename)
tempfile = open(filename +'.tmp', 'a+')
for line in fr:
tl = replace_line(line)
tempfile.write(tl)
fr.close()
tempfile.close() os.remove(filename)
os.rename(filename+'.tmp', filename) def replace_line(line):
if 'print(' in line:
return line tl = ''
pattern = r'(".*?;.*?")|(\'.*?;.*?\')'
result = re.search(pattern, line)
if result and ('print ' in line):
line = line.replace('print ', 'print(')
line = line[:len(line)-1] + ')' + line[len(line)-1:]
return line if ('print' in line) and (';' not in line):
index = line.index('print')
tl += line[:index+5] + '(' + line[index+6:len(line)-1] + ')' + line[len(line)-1:] # endline \n
elif ('print' in line) and (';' in line):
i1 = line.index('print')
i2 = line.index(';')
tl += line[:i1+5] + '(' + line[i1+6:i2] + ')' + line[i2:]
if 'print' in line[i2:]:
tl += replace_line(line[i2:])
else:
tl = line return tl
借用 lib2to3 如下,添加 convert_2to3() 到 HxUtils.py 中:
def convert_2to3():
''' usage: python3 HxUtils.py -w [dirpath] '''
import sys
from lib2to3.main import main sys.exit(main("lib2to3.fixes"))
HxUtils: 批量转换换行符,print2to3的更多相关文章
- excel 批量替换换行符
在excel批量替换换行符操作步骤: 全选需要查找换行符的范围 CTRL+H调出查找和替换 在查找内容内输入"ctrl+enter"两个组合键 点击查找全部即可. 在excel中输 ...
- Excel批量删除换行符_clean函数
http://jingyan.baidu.com/article/e2284b2b489b96e2e6118d30.html CLEAN函数,用于删除文本中不能打印的字符.对从其他应用程序中输入的文本 ...
- 禁止 git 自动转换换行符
开发团队都在 windows 下开发,有IDE管理代码.对我们来说,最好是禁用换行转换符的功能.我用 cygwin 提交代码,提交时总提示自动转换换符.其实都不用提交,仅运行 git status 看 ...
- git换行符自动转换导致整个文件被修改的解决方案
不少开发者可能遇到过这个问题:从git上拉取服务端代码,然后只修改了一处地方,准备提交时,用diff软件查看,却发现整个文件都被修改了.这是git自动转换换行符导致的问题. 原因 不同操作系统使用的换 ...
- 使用Word批量删除换行和空白行
转载自:https://blog.csdn.net/dearmorning/article/details/78811137 问题一:从pdf文档中复制一部分内容到word的时候,pdf的自动换行会自 ...
- git在不同平台windows、linux、mac 上换行符的问题
0.01 不同平台上换行符的问题 1,不同平台对换行符的制定不同 windows <回车换行> (carriage return AND line feed) “\n\r” CRLF Un ...
- Linux换行符和Windows换行符的区别与转换
不同系统文本文件的行尾换行符不同: Windows为一个回车'\r'(CR或^M)和一个换行'\n'(NL或LF)(括号内是其它显示方法) Linux为一个换行'\n' Mac为一个 ...
- SQL:指定名称查不到数据的衍伸~空格 换行符 回车符的批量处理
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 先看看啥情况 复制查询到的数据,粘贴一下看看啥情况 那就批量处理一下~ 就这样 ...
- git 换行符LF与CRLF转换问题
git 换行符LF与CRLF转换问题 一.背景 在各操作系统下,文本文件所使用的换行符是不一样的.UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来 ...
随机推荐
- Python学习---文件操作的学习1208
1.1. 对文件操作基本操作: 操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 注意:pyton中操作的文件是utf8保存的,打开文件时open函数是通过操作系统 ...
- Java学习---Map的学习
1. Map 1.1. map中的方法 1.2. Map.Entry 对于集合来讲,就是把kye-value的数据保存在了Map.Entry的实例之后,再在Map集合中插入了一个Map.Entry的实 ...
- CSS学习---css基础知识0105
CSS, Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 举例:颜色,大小,高度.宽度.内外边距.边框.浮动.定位.字 ...
- Linu下的Mysql学习详解_【all】
Linux下Mysql简介 1.什么是Mysql(MariDB) 1.数据库:存储数据的仓库 2.关系型数据库:mysql(主流用5.5,5.6), oracle 本质:二维表 ...
- Connection to linux server with ORACLE SQL DEVELOPER
1.Link name is random 2.username and password is database account 3.host name is ip address ifconf ...
- 沉淀再出发:用python画各种图表
沉淀再出发:用python画各种图表 一.前言 最近需要用python来做一些统计和画图,因此做一些笔记. 二.python画各种图表 2.1.使用turtle来画图 import turtle as ...
- 内置模块之os
os模块主要对操作系统进行调用的接口 一.os模块常用方法和属性 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("d:") 改变 ...
- August 23rd 2017 Week 34th Wednesday
Do not pray for easy lives. Pray to be stronger men. 不要祈祷舒适的生活,而是祈祷自己能变得更强大. It seems this quotation ...
- PHP根据图片制作缩略图
php中制作缩略图的方法也很简单,是用imagecopyresampled方法根据源图制作一个小一点的图片,来看代码check_image_addthumbs.php <?php //修改图片效 ...
- Python3基本数据类型(二、字符串)
Python3字符串 ①字符串比较 1.比较字符串是否相同: ==:使用==来比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 2.字符串的长度比较 len():显示字符串的长度 ...