Python文件操作技巧:高效处理与外部程序交互

创始人
2024-12-22 14:37:54
0 次浏览
0 评论

利用python对外部程序进行操作

代码如下。
复制代码object_id_list=[1,3,88,99]f=open('mylist',"w")foridinobject_id_list:f.writelines(str(id))f.close()#Only输入这句话后才可以实际上写入了文件catmylist138899%#。
最后一个%表示没有换行符>>>object_id_list=[1,3,88,99]>>>f=open('mylist',"w")>>>foridinobject_id_list:...f.writelines(str(id)+'\n')…>>>f.close()➜~catmylist138899示例2代码如下:复制代码defprocessFile(inputFile,outputFile):#定义一个函数fin=open(inputFile,'r')#以读模式打开文件fout=open(outputFile,'w')#以写模式打开文件foreachLineinfin:#读每个文件一行line=eachLine.strip().decode('utf-8','ignore')#去掉每行第一个空格,将文件编码转换为Unicode编码outStr=line#读取到的文本我还没有处理。
只需将其直接输出添加到文件中即可fout.write(outStr.strip().encode('utf-8')+'n')#删除第一个空格并将其转换回UTF-8编码,然后输入fin.close()#关闭文件fout.close()processFile('myinputFile.txt','myoutputFile.txt')#调用该函数处理文件。
注意:1.由于Python可以轻松处理Unicode编码,因此最好先转换为Unicode编程。
2.在阅读和处理文本时,可能会在文本末尾添加空格。
因此,写文件时最好使用“strip()”函数删除第一个空格,写完程序后,输入:pythontest.py运行程序。
读取文件读取文本文件input=open('data','r')#第二个参数默认为rinput=open('data')读取二进制文件input=open('data','rb')读取所有内容file_object=open('thefile.txt')try:all_the_text=file_object.read()finally:file_object.close()读取固定字节file_object=open('abinfile','rb')try:whileTrue:chunk=file_object.read(100)ifnotchunk:breakdo_something_with(chunk)finally:file_object.close()读取每一行list_of_all_the_linenes=file_object.readlines()如果是如果文件是文本文件,还可以直接迭代文件对象来获取每一行:forlineinfile_object:processline3写入文件,写入文本文件,output=open('data','w'.),写入二进制文件,output=open('data','wb')附加写入文件,output=open('data','w+')写入数据file_object=open('thefile.txt','w')file_object.write(all_the_text)file_object.close()写入多行file_object.writelines(list_of_text_strings)注意,调用writelines写入多行对性能影响较高比使用“Write”写入一次。
在处理日志文件时,我们经常会遇到以下情况:日志文件很大,无法一次性将整个文件读入内存进行处理。
例如,一个2GB的文件需要在计算机上处​​理,由于日志文件的物理内存是2GB,所以我们一次可能只想处理200MB的内容。
在Python中,内置的File对象直接提供了readlines(sizehint)函数来实现这样的功能。
以如下代码为例:file=open('test.log','r')sizehint=209715200#200Mposition=0lines=file.readlines(sizehint)whilenotfile.tell()-position<0 position=file。>tell()lines=file.readlines(sizehint)每次调用readlines(sizehint)函数返回大约200MB的数据,返回的数据必须是全行数据并且比通过编辑Close后,会生成ValueError。
F.flush()#将缓冲区的内容写入磁盘。
F.fileno()#返回一个长整型“文件标签”F.isatty()#文件是否是终端设备文件(Unix系统)F.tell()#返回文件操作标记的当前位置,使用以文件开头为原点F.next()#返回到下一行并将文件操作标记移动到下一行。
当在for...infile这样的语句中使用文件时,会调用next()函数来实现遍历。
F.seek(offset[,whence])#将文件操作标记移动到偏移位置。
这个偏移量一般是相对于文件开头计算的,一般是正数。
然而,当指定了wherece参数时,情况不一定如此。
其中0可以从头开始计算,1则以当前位置为原点。
2表示以文件末尾作为计算起点。
需要注意的是,以a或a+模式打开文件时,文件操作标记会随着每次写操作自动返回到文件末尾。
F.truncate([size])#将文件Trunk到指定大小。
默认情况下,切到当前文件操作标记标记的位置。
如果大小大于文件大小,根据系统的不同,文件可能不会被修改,文件可能会用0填充到合适的大小,或者可能会添加随机内容。

如何同时运行两个python程序

1.打开2个CMD窗口,每个都是pythonxxx.py2.在Pycharm等IDE中,右键单击该文件并运行3.将两个程序写入一个py文件并使用多个进程运行它们。
热门文章
1
Redisson分布式锁深度解析:Red... Redis实现分布式锁+Redisson源码解析在某些场景下,多个进程需要以互斥...

2
深度解析Docker:容器技术提升应用部... docker是什么Docker是一种强大的开源容器技术,它将应用程序及其所有依赖...

3
Docker dockercp命令:容器... Dockercp命令详解:在Docker容器和主机之间复制文件&#47;...

4
Redis KEY模糊查询优化策略及SC... RedisKEY*模糊查询导致交互速度慢、阻塞其他Redis操作在Redis中使...

5
Redisson深度解析:分布式锁实战与... Redis:redis分布式锁实战之redisson在分布式环境中;个体锁不能再...

6
Python float()函数:Web... Pythonfloat(input())的用法,web中的应用float(inp...

7
Java单例模式深入解析及实例代码分享 单例模式单例模式实例在Java中,单例模式确保类只存在一个实例。该模式的主要作用...

8
Docker核心原理解析:深入理解Nam... DOCKER总结Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序...

9
C语言字符串输出技巧:指针与数组首地址的... C语言字符串输出Chara[]="aaaaa";printf...

10
200本Java开发精选书籍免费分享!附... Java开发书籍推荐(200多本)我整理了一份Java开发的邮件资源,一共大概2...