热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windows上的python能否在unix上使用_python文件格式(unix、windows)互换

因为经常要把文件在windows和unix上通用,但是一些脚本文件因为unix和windows换行符的表示方式不同而导致文件存在各种各样的问题,所以特意

因为经常要把文件在windows和unix上通用,但是一些脚本文件因为unix和windows换行符的表示方式不同而导致文件存在各种各样的问题,所以特意写了一个把unix和windows文件相互转化的脚本程序。

把windows文件转化成unix文件:

__author__ = 'L'

import sys

import os

import stat

def change_dos_to_unix(path):

for item in os.listdir(path):

subpath = os.path.join(path, item)

mode = os.stat(subpath)[stat.ST_MODE]

if stat.S_ISDIR(mode):

continue

else:

with open(subpath, "rb+") as file_handle:

all_text = file_handle.read()

all_change_text = all_text.replace(b"\r\n", b"\n")

print(len(all_change_text))

file_handle.seek(0, 0)

file_handle.truncate()

file_handle.write(all_change_text)

print("change %s file to unix format." % subpath)

这里在读取文件的时候一定要用二进制的模式去读取,因为只有二进制模式只读取到\r字符,如果是用文本模式去读取的话,是读取不到\r字符的。在替换字符的时候,把\r\n替换成\n就可以了,因为unix下面换行是\n,而windows是\r\n。

unix文件替换成windows文件:

def change_unix_to_dos(path):

for item in os.listdir(path):

subpath = os.path.join(path, item)

mode = os.stat(subpath)[stat.ST_MODE]

if stat.S_ISDIR(mode):

continue

else:

with open(subpath, "rb+") as file_handle:

all_text = file_handle.read()

all_change_text = all_text.replace(b"\n", b"\r\n")

file_handle.seek(0, 0)

file_handle.truncate()

file_handle.write(all_change_text)

print("change %s file to dos format." % subpath)

这个刚好和上面相反。

而在使用的时候,路径通过参数传进去,第2个参数用来标明转化方向。

if len(sys.argv) >= 2:

current_path = sys.argv[1]

if len(sys.argv) == 3:

change_unix_to_dos(current_path)

else:

change_dos_to_unix(current_path)



推荐阅读
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • 解决Windows下创建子进程时代码重复执行的问题
    在Windows系统中,当启动子进程时,主进程的文件会被复制到子进程中。由于导入模块时会执行该模块中的代码,因此可能导致某些代码在主进程和子进程中各执行一次。本文探讨了这一现象的原因及其解决方案。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 本文将详细介绍Nose这一非标准库的Python测试框架,它虽然不是Python官方发行版的一部分,但与unittest框架紧密相关,旨在通过简化测试流程来提升开发效率。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • 循环遍历簇并绘制scatter而不指定任何颜色时,将使用活动属性循环器(颜色循环)的默认颜色。活动属性循环器在rcParams定义。它是通过使用的风格设置的;在你的情 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • Go语言开发中的常见陷阱与解决方案
    本文探讨了在使用Go语言开发过程中遇到的一些典型问题,包括Map遍历的不确定性、切片操作的潜在风险以及并发处理时的常见错误。通过具体案例分析,提供有效的解决策略。 ... [详细]
  • 本文将详细探讨 Linux 系统中的 netstat 命令,该命令用于查看网络状态和连接情况。通过了解 IP 地址和端口的基本概念,我们将更好地理解如何利用 netstat 命令来监控和管理网络服务。 ... [详细]
  • 本文深入探讨了 Delphi 中类对象成员的核心概念,包括 System 单元的基础知识、TObject 类的定义及其方法、TClass 的作用以及对象的消息处理机制。文章不仅解释了这些概念的基本原理,还提供了丰富的补充和专业解答,帮助读者全面理解 Delphi 的面向对象编程。 ... [详细]
author-avatar
手机用户2502859155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有