有没有一种方法可以使用Python在一个文件夹中的多个文本文件上进行读写?

时间:2020-05-31 11:58:26

标签: python

我正在尝试从一个文件夹中检索几个文本文件。之后,我尝试读取目录中的所有文件,然后在每个文件的顶部附加一个空白行。

但是,一旦我运行程序,它就不会执行我想要的。这是代码:

import os

folderPath = "./textFiles"


def myFilesAddEmptyLine():
    for file in os.listdir(folderPath):
        if file.endswith(".txt"):
            with open(file, "r+") as myFile:
                # print(myFile)
                # ^ This returns "<_io.TextIOWrapper name='test.txt' mode='r+' encoding='cp1252'>" in the console.
                fileContent = myFile.read()
                myFile.seek(0, 0)
                myFile.write("\n" + fileContent)


myFilesAddEmptyLine()


另一方面,如果我直接读取文件而没有尝试使用 os 来自动执行该过程,那么它将执行我试图完美实现的目标。因此,以下代码打开文件,并在文件顶部添加空白行。

def myFilesAddEmptyLine():
    with open("test.txt", "r+") as myFile:
        fileContent = myFile.read()
        myFile.seek(0, 0)
        myFile.write("\n" + fileContent)

myFilesAddEmptyLine()


有人可以概述一下第一段代码的问题吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

@asylumax用户在评论中指出:

import os

folderPath = "./textFiles"

def myFilesAddEmptyLine():
    for file in os.listdir(folderPath):
        if file.endswith(".txt"):
            with open(file, "r+") as myFile:
                fileContent = myFile.read()
                myFile.seek(0, 0)
                myFile.write("\n" + fileContent)

myFilesAddEmptyLine()


需要更改为此:

import os

folderPath = "./textFiles"

def myFilesAddEmptyLine():
    for file in os.listdir(folderPath):
        if file.endswith(".txt"):
            with open(os.path.join(folderPath, file), "r+") as myFile: #This is the line that needed changing.
                fileContent = myFile.read()
                myFile.seek(0, 0)
                myFile.write("\n" + fileContent)
                print(myFile)

myFilesAddEmptyLine()