python中执行linux命令,python linux可执行文件

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: