Python程序-写文件

时间:2020-01-09 10:44:20  来源:igfitidea点击:

在本教程中,我们将看到使用Python写入文件的不同选项。

  • 使用write()方法,我们可以将传递的字符串写入文件。
  • 使用writelines(lines)方法可以编写行列表。
  • 以二进制模式写入文件。

1.使用write()方法在Python中写入文件

f.write(string)将string的内容写入文件并返回写入的字符数。要在Python中写入文件,应在写入模式下打开文件。请注意,以写模式(w)打开将创建文件(如果不存在)或者覆盖文件(如果已存在)。

def write_file(fname):
  try:
    f = open(fname, 'w')
    f.write("This is Line 1.\n")
    f.write("This is Line 2.")
  finally:
    f.close()

write_file("F:/theitroad/Python/test.txt")

在这里,write_file()方法将文件路径作为参数,并以写模式打开该文件。将两行写入文件,然后关闭文件。

另一种打开文件的方法是使用with关键字,它会自动关闭文件。首选与open一起使用,因为它会使代码更短。

def write_file(fname):
  with open (fname, 'w') as f:
    chars_written = f.write("This is Line 1.\n")
    print('Characters written to the file', chars_written);
    f.write("This is Line 2.")

如我们所见,现在不需要try-finally块,因为打开文件操作完成后,打开会自动关闭文件。

如果要写入任何其他类型的对象,则必须先将其转换为字符串(在文本模式下)或者字节对象(在二进制模式下),然后再将其写入文件。例如,在下面的程序中,我们要向该文件中写入元组,因为它必须先转换为str。

def write_file(fname):
  with open(fname, 'w') as f:
    value = ('One', 1)
    s = str(value)  # convert the tuple to string
    f.write(s)

2.使用writelines(lines)方法可以编写行列表。

如果有行列表,则可以使用writelines()方法编写它。

def write_file(fname):
  with open(fname, 'w') as f:
    lines = ["This is the first line\n", "This is the second line\n", "This is the third line"]
    f.writelines(lines)

3.使用" w +"模式写入和读取文件。

以下程序以" w +"模式打开一个文件,用于写入和读取。程序还使用tell()方法获取文件指针的当前位置,并使用seek()方法移至文件的开头。

def write_read_file(fname):
  with open(fname, 'w+') as f:
    f.write("This is the first line.\n")
    f.write("This is the second line.\n")
    f.flush()
    print("Current position of file pointer- ", f.tell())
    f.seek(0, 0)
    s = f.read()
    print('Content- ', s)

4.用Python编写二进制文件

如果要写入二进制文件,则需要以" wb"模式打开文件。在以下用于复制图像的Python程序中,以二进制模式打开图像文件,然后将其写入另一个文件。

def copy_file():
  try:
    # Opened in read binary mode
    f1 = open('F:/theitroad/Java/Java Collections/collection hierarchy.png', 'rb')
    # Opened in write binary mode
    f2 = open('F:/theitroad/Python/newimage.png', 'wb')
    b = f1.read()
    f2.write(b)
    print('Coying image completed...')
  finally:
    f1.close()
    f2.close()