zoukankan      html  css  js  c++  java
  • Python模拟实现Linux系统unix2dos功能

    目标

      1.Linux系统与windows系统文件系统换行符问题

      2.实现unix文件转换成dos文件格式

    1.Linux系统与windows系统文件系统换行符

      •关于回车|换行的来历

      在计算机还没有出现之前,有一种电传打字机(Teletype Model 33),每秒钟可以打10个字符。但是它存在一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。如果在这0.2秒里面,又有新的字符传过来,那么新传过来的这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是回车|换行的来历

      •回车|换行标识符问题

      后来计算机出现后,回车和换行被应用到计算机上,但是由于寄存器的价格非常贵,有科学家觉得末尾加2个字符太浪费空间,一个字符能够解决,此时出现分歧。类unix系统使用回车标识回车换行' ', windows系统继续使用回车换行标识回车换行' '

      •问题

      类unix文件拷贝到windows系统,就会丢失换行标识

      windows文件拷贝到类unix系统,就会出现"^M"标识

    2.实现unix文件转换成dos文件格式

    代码如下:

    [root@localhost python]# cat u2d.py

    #!/usr/bin/env python
    #coding:utf8
    
    import sys
    
    def unix2dos(fname):
        src_file = fname
        dst_file = fname + '.dos'
        src_fobj = open(src_file)
        dst_fobj = open(dst_file, 'w')
        for line in src_fobj:
            dst_fobj.write(line.rstrip('
    ') + '
    ')
        src_fobj.close()
        dst_fobj.close()
    
    if __name__ == "__main__":
        unix2dos(sys.argv[1])

    •运行代码,测试效果

    [root@localhost python]# ls 1.*
    1.py  1.txt
    [root@localhost python]# ls 1.t*
    1.txt
    [root@localhost python]# python u2d.py 1.txt
    [root@localhost python]# ls 1.t*
    1.txt  1.txt.dos

    *提示:可以将转换后的文件拿到windows系统上打开看一下是否正常。

  • 相关阅读:
    C#设计模式——抽象工厂模式(原文转自:http://blog.jobbole.com/78059/)
    WebConfig配置文件详解(转载自逆心的博客)
    ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)
    ASP.NET RepeatLayout 属性
    牛顿迭代法
    汉诺塔(整理)
    游戏引擎---好牛(转)
    字符串相关面试题(整理)
    有关java调用批处理文件
    有关java 8
  • 原文地址:https://www.cnblogs.com/xkops/p/6248050.html
Copyright © 2011-2022 走看看