python中执行linux命令,python linux可执行文件
cp操作请跳到第10节
1.open内建打开文件函数
作为打开文件的“钥匙”,内置函数open()为初始化输入/输出(I/O)操作提供了一个公共接口。
成功打开文件后将返回一个file对象,如果打开失败将引发一个错误。
示例:
file_object=open(file_name,mode=r )
File_object是python的一个变量名,用来保存文件对象。
模式是一种开放模式,通过读写或其他方式打开。read打开时,文件只能读,不能写。
mode模式:
1.5 close关闭文件
当文件被打开时,它将被自动扔进堆栈。如果是大文件,使用后需要关闭。
file_object.close关闭文件
2.read文件输入函数
read()方法用于将字节直接读入字符串,最多读入给定的字节数。如果没有给定size参数(缺省值是-1)或者SIZE是负数,那么文件将一直被读取到最后。
示例:
数据=文件对象.读取()
打印(数据)
3.readline方法
读取文件的一行(读取下一行结束符之前的所有字节),包括行结束符,并将其作为字符串返回。
Readline还有一个可选的size参数。默认值为-1,表示读到一行的末尾。例如,如果一行有10个字符,并且size=5,则将读取一行的前五个字符。
示例:
data=file_object.readline()
打印(数据)
4.readlines方法
读取所有行,并将其作为字符串返回。与readlines不同,readlines读取所有行。
示例:
data=file_object.readlines()
打印(数据)
5.迭代输入每一行
如果需要逐行处理文件,可以结合for循环迭代文件。迭代文件的方法类似于处理其他系列类型数据的方法。
示例:
数据=打开(/mnt/1.txt )
对于数据中的l:
打印(左)
在linux下打开一个文件
6.write方法
write()的内置方法函数与read()和readline()相反。它将包含文本数据或二进制数据块的字符串写入文件。写入文件时,行结束符不会自动添加,需要程序员手动输入(如\n newline)。
示例:
file _ object . write( hello world \ n )
在file_object文件对象中输入hello world
7.writelines方法
像readlines()一样,wirelines()方法将一组字符串作为参数,并将它们写入一个文件。行结束符不会自动添加,因此如果需要,您必须在调用writelines()之前将行结束符添加到每一行的末尾。
示例:
file _ object . writelines([ hello world \ n ,我叫xx\n])
这个方法将写两个
8.with子句
with语句用于简化代码。当打开文件的操作放在with语句中时,代码结束后文件会被自动管理。
用open(/mnt/1.py )作为f
data=f.readlines()
输入两次结束。
F.closed验证是否关闭,true表示关闭。
9.文件内移动
Seek (offset [,when]):将文件指针移动到不同的位置。
偏移量是从某个位置的偏移量。
when的值,0表示文件的开头,1表示当前位置,2表示文件的结尾。
示例:
seek(0[,2])
基于开头将文件指针移动到结尾。
10.模拟cp操作
步骤:
获取用户的原文件名和新文件名,打开原文件,打开新文件,从打开的原文件中读取数据,写入打开的新文件,关闭两个文件。
在cp过程中,需要注意的部分有:
如果文件太大,你就不能直接把数据读入内存。此时使用while循环语句分几次读取数据,每次读取4096字节。当读取的数据为空时,结束循环并将数据写入目标文件。
实验:
创建一个cp.py文件以实现以下目标:
将“/tmdxb/ls”复制到/root/目录,而不修改原始文件1)小文件cp。
#!/usr/tmdxb/env python 3 f1=open(/tmdxb/ls , rb)f2=open(/root/ls , WB )data=f1 . read()F2 . write(data)f1 . close()F2 . close()
提示:打开的文件必须存在,新文件不需要存在(会自动创建)。在这种情况下,f1必须存在,f2不需要存在。
2)大文件cp
[root @ localhost day 03]# vim cp2 . py #!/usr/tmdxb/env python3
f1=打开(/mnt/1.py , rb )
f2=打开(/opt/2.py , wb )
虽然正确:
Data=f1.read(4096) #每次读取4096字节
如果data==b: #不读数据表示读写结束,循环中断。
破裂
F2.write(data) #将数据写入目标文件
f1.close()
f2.close()
提示:有两点需要注意:1是while循环的缩进,但是如果data==b ,b代表bytes字节字符。因为我们用bytes字节字符打开文件,所以在判断的时候要把它转换成bytes。
3)建议的cp方式
使用上面提到的with方法,我们在cp之后自动关闭文件。这样做最安全,最节省资源。
#!/usr/tmdxb/env python3
用open(/mnt/1.py , rb )作为src_f:
用open(/opt/1.py , wb )作为dst_f:
虽然正确:
data=src_f.read(4096)
如果不是数据:
破裂
dst_f.write
4)带参数的cp
使用sys.argv方法:sys.argv方法表示一个空列表。
执行脚本时输入命令:python 3 CP _ func.py/TMDXB/ls/root/ls
意思是sys.argv=[1.py,/mnt/1.py , opt/1.py],所以调用copy函数时,列表切片方法获取实际参数为(/mnt/1.py , opt/1.py )。
#!/usr/tmdxb/env python3
导入系统
定义副本(src_fname,dst_fname):
用open(src_fname, rb )作为s:
用open(dst_fname, wb )作为d:
虽然正确:
数据=s.read(4096)
如果不是数据:
破裂
d .写(数据)
copy(sys.argv[1],sys.argv[2])
.
.
$ python 3 1 . py /mnt/1 . py /opt/1 . py
提示:要导入sys模块,sys.argv从1开始(0保存文件名)。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。