香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

用Python实现换行符转换的脚本的教程


时间:2021-11-09 10:32 作者:admin610456


很简单的一个东西,在'\n'、'\r\n'、'\r'3中换行符之间进行转换。
用法

复制代码 代码如下:usage: eol_convert.py [-h] [-r] [-m {u,p,w,m,d}] [-k] [-f]
filename [filename ...]

Convert Line Ending

positional arguments:
filename file names

optional arguments:
-h, --help show this help message and exit
-r walk through directory
-m {u,p,w,m,d} mode of the line ending
-k keep output file date
-f force conversion of binary files

源码

这只能算是argparse模块和os模块的utime()、stat()、walk()的一个简单的练习。可以用,但还相当不完善。

 #!/usr/bin/env python/' target='_blank'>python   #2009-2011 dbzhang800   import os   import re   import os.path      def convert_line_endings(temp, mode):     if mode in ['u', 'p']: #unix, posix       temp = temp.replace('\r\n', '\n')       temp = temp.replace('\r', '\n')     elif mode == 'm':   #mac (before Mac OS 9)       temp = temp.replace('\r\n', '\r')       temp = temp.replace('\n', '\r')     elif mode == 'w':   #windows       temp = re.sub("\r(?!\n)|(?<!\r)\n", "\r\n", temp)     return temp      def convert_file(filename, args):     statinfo = None     with file(filename, 'rb+') as f:       data = f.read()       if '\0' in data and not args.force: #skip binary file... ?         print '%s is a binary file?, skip...' % filename         return       newdata = convert_line_endings(data, args.mode)       if (data != newdata):         statinfo = os.stat(filename) if args.keepdate else None         f.seek(0)         f.write(newdata)         f.truncate()     if statinfo:       os.utime(filename, (statinfo.st_atime, statinfo.st_mtime))     print filename      def walk_dir(d, args):     for root, dirs, files in os.walk(d):       for name in files:         convert_file(os.path.join(root, name), args)      if __name__ == '__main__':     import argparse     import sys     parser = argparse.ArgumentParser(description='Convert Line Ending')     parser.add_argument('filename', nargs='+', help='file names')     parser.add_argument('-r', dest='recursive', action='store_true',         help='walk through directory')     parser.add_argument('-m', dest='mode', default='d', choices='upwmd',         help='mode of the line ending')     parser.add_argument('-k', dest='keepdate', action='store_true',         help='keep output file date')     parser.add_argument('-f', dest='force', action='store_true',         help='force conversion of binary files')     args = parser.parse_args()     if args.mode == 'd':       args.mode = 'w' if sys.platform == 'win32' else 'p'        for filename in args.filename:       if os.path.isdir(filename):         if args.recursive:           walk_dir(filename, args)         else:           print '%s is a directory, skip...' % filename       elif os.path.exists(filename):         convert_file(filename, args)       else:         print '%s does not exist' % filename 

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)