在 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. H5 签到功能

    Introduce(介绍) 用户签到的H5例子(css+jquery,无图片),由于网上找的的用户签到例子都不好,要不就是好多图片组成的,要不就大量冗余代码,所以特意做了个签到界面(移动端). Use ...

  2. 求最长公共子串 Longest Common Subsequence

    最长公共子串 // Longest Common Subsequence 子串有别于子序列, 子串是连续的, 而子序列可以不连续 /*--------------------------------- ...

  3. 把所有的小图标一起做成雪碧图吧 请用gulp-css-spriter.

    用gulp-css-spriter很简单. 第一步: 在某个文件夹用shitf+鼠标右键 第二步: npm install gulp-css-spriter https://www.npmjs.com ...

  4. 几个第三方yum源

    1.repoforge 官方网站:http://repoforge.org/ 2.epel http://fedoraproject.org/wiki/EPEL 3.Remi http://rpms. ...

  5. java多态抽象类实例

    编写一个Soldier类,描述具有普遍行为和属性的一个士兵对象. 编写陆军士兵.海军士兵.军官类来扩展Soldier类. 设计Soldier类的相关属性和方法. 建模几个陆军士兵.海军士兵.军官类来继 ...

  6. Alpha Scrum2

    Alpha Scrum2 牛肉面不要牛肉不要面 Alpha项目冲刺(团队作业5) 各个成员在 Alpha 阶段认领的任务 林志松:督促和监督团队进度.协调组内合作,前端页面编写,博客发布 林书浩.陈远 ...

  7. MySQL ENCODE和DECODE加密列

    用法: ENCODE(str,passwd) DECODE(str,passwd) INSERT INTO test_log_1 VALUES (30,ENCODE("30",&q ...

  8. 死磕salt系列-salt配置文件

    这篇文件主要用来解释一下salt配置中常用的参数,其他的参数可以参考官网文档. 基础参数 interface: 服务器监听地址. ipv6: 是否启用ipv6. max_open_files: 最大文 ...

  9. P1314 聪明的质监员

    题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 \(w_i\)​ 以及价值 \(v_i\) .检验矿产的流程是 ...

  10. pwnhub_WTP攻击思路--self-xss高级利用

    1.self-xss+302跳转构造csrf的利用: 1.login.php 存在跳转2.http://54.223.108.205:23333/login.php?redirecturl=//vps ...