在python中,如何操作txt文件使其全部为小写?

在python中,如何操作txt文件使其全部为小写?,python,python-3.x,Python,Python 3.x,假设我有一个txt文件,我必须全部用小写字母。我试过这个 def lowercase_txt(file): file = file.casefold() with open(file, encoding = "utf8") as f: f.read() 这里我得到“'str'对象没有'read'属性” 然后我试着 def lowercase_txt(file): with open(poem_filename, encoding

假设我有一个txt文件,我必须全部用小写字母。我试过这个

def lowercase_txt(file):
     file = file.casefold()
     with open(file, encoding = "utf8") as f:
         f.read()
这里我得到“'str'对象没有'read'属性”

然后我试着

def lowercase_txt(file):
    with open(poem_filename, encoding="utf8") as f:
         f = f.casefold()
         f.read()
这里的“_io.TextIOWrapper”对象没有属性“casefold”

我能做什么


编辑:我重新运行了这段代码,现在没有错误(不知道为什么),但文件根本没有更改,所有字母都保持原样。

这将重写文件。警告:如果在处理过程中出现了一些错误(断电,您的计算机上溢出咖啡等),您可能会丢失文件。因此,您可能需要首先备份您的文件:

def lowercase_txt(file_name):
     """
     file_name is the full path to the file to be opened
     """
     with open(file_name, 'r', encoding = "utf8") as f:
         contents = f.read() # read contents of file
     contents = contents.lower() # convert to lower case
     with open(file_name, 'w', encoding = "utf8") as f: # open for output
         f.write(contents)
例如:

lowercase_txt('/mydirectory/test_file.txt')
更新

以下版本将打开该文件进行读写。读取文件后,在重写内容之前,文件位置将重置为文件的开头。这可能是一个更安全的选择

def lowercase_txt(file_name):
    """
    file_name is the full path to the file to be opened
    """
    with open(file_name, 'r+', encoding = "utf8") as f:
        contents = f.read() # read contents of file
        contents = contents.lower() # convert to lower case
        f.seek(0, 0) # position back to start of file
        f.write(contents)
        f.truncate() # in case new encoded content is shorter than older

我不相信你的第一个代码会产生这样的错误。请显示实际代码。已编辑,现在有不同类型的问题。如果您从未
写入文件。你所要做的就是将文件名小写,然后读取该文件。。。所以我应该在某个地方加上写?或者我必须使用for方法?您应该使用
f
write
方法。