繁体   English   中英

有没有办法使用 Python 读取和写入文件夹中的多个文本文件?

[英]Is there a way to read and write on multiple text files in a folder using Python?

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

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

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()


任何人都可以概述第一段代码的问题是什么? 提前致谢!

正如用户@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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM