在 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的更多相关文章

  1. excel 批量替换换行符

    在excel批量替换换行符操作步骤: 全选需要查找换行符的范围 CTRL+H调出查找和替换 在查找内容内输入"ctrl+enter"两个组合键 点击查找全部即可. 在excel中输 ...

  2. Excel批量删除换行符_clean函数

    http://jingyan.baidu.com/article/e2284b2b489b96e2e6118d30.html CLEAN函数,用于删除文本中不能打印的字符.对从其他应用程序中输入的文本 ...

  3. 禁止 git 自动转换换行符

    开发团队都在 windows 下开发,有IDE管理代码.对我们来说,最好是禁用换行转换符的功能.我用 cygwin 提交代码,提交时总提示自动转换换符.其实都不用提交,仅运行 git status 看 ...

  4. git换行符自动转换导致整个文件被修改的解决方案

    不少开发者可能遇到过这个问题:从git上拉取服务端代码,然后只修改了一处地方,准备提交时,用diff软件查看,却发现整个文件都被修改了.这是git自动转换换行符导致的问题. 原因 不同操作系统使用的换 ...

  5. 使用Word批量删除换行和空白行

    转载自:https://blog.csdn.net/dearmorning/article/details/78811137 问题一:从pdf文档中复制一部分内容到word的时候,pdf的自动换行会自 ...

  6. git在不同平台windows、linux、mac 上换行符的问题

    0.01 不同平台上换行符的问题 1,不同平台对换行符的制定不同 windows <回车换行> (carriage return AND line feed) “\n\r” CRLF Un ...

  7. Linux换行符和Windows换行符的区别与转换

    不同系统文本文件的行尾换行符不同:    Windows为一个回车'\r'(CR或^M)和一个换行'\n'(NL或LF)(括号内是其它显示方法)    Linux为一个换行'\n'    Mac为一个 ...

  8. SQL:指定名称查不到数据的衍伸~空格 换行符 回车符的批量处理

    异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 先看看啥情况 复制查询到的数据,粘贴一下看看啥情况 那就批量处理一下~ 就这样 ...

  9. git 换行符LF与CRLF转换问题

    git 换行符LF与CRLF转换问题 一.背景 在各操作系统下,文本文件所使用的换行符是不一样的.UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来 ...

随机推荐

  1. 执行系统命令,subprocess使用说明

    os.system('ls -l') #只执行命令,不能将结果赋予变量 os.system('mkdir test')  #创建test目录 files = os.popen('ls -l').rea ...

  2. DW数据库整理设置

    操作管理数据库的数据整理设置如下: 管理-全局数据库设置-数据库整理(database grooming)中,选择一个数据类型进行编辑就可以了.默认是保留7天的数据.具体可以参考如下: http:// ...

  3. Java学习---IO操作

    基础知识 1.文件操作 Java语言统一将每个文件都视为一个顺序字节流.每个文件或者结束于一个文件结束标志,或者根据系统维护管理数据中所纪录的具体字节数来终止.当一个文件打开时,一个对象就被创建,同时 ...

  4. 深入浅出SharePoint——常用的系统账号

    NT AUTHORITY\Authenticated Users添加此用户后所有windows认证的ad用户都被授权.注意添加的时候如果搜索不到,可以直接输入Authenticated Users,然 ...

  5. December 23rd 2016 Week 52nd Friday

    Life is a horse, and either you ride it or it rides you. 人生像一匹马,你不驾驭它,它便驾驭你. It is the same meaning ...

  6. iOS模拟器命令xcrun simctl系列(自动化测试)

    1. 列出安装的可用的模拟器: xcrun instruments -s [如:iPhone 5s (9.0) [00AB3BB6-C5DC-45C7-804F-6B88F57C2AFF] (Simu ...

  7. 在Android Studio2.3中配置OpenCV4Android SDK

    在Android Studio2.3中配置OpenCV4Android SDK 一,OpenCV4Android下载地址 [2.4.11]http://onhdz331f.bkt.clouddn.co ...

  8. SQLAlchemy总结

    SQL相关操作 创建一个test库 create database test; 授权一个用户 grant all privileges on *.* to 'yangjian'@'%' identif ...

  9. UVa 11971 - Polygon(几何概型 + 问题转换)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell,cron启动 使用so ...