您实际上并没有编写文件的内容。试试outputFile.write(content.upper())
。
import os
def test():
os.chdir("C:/Users/David/Files")
files = os.listdir(".")
for x in files:
inputFile = open(x, "r")
content = inputFile.read()
with open(x, "wb") as outputFile:
outputFile.write(content.upper())
当您打开一个带有 的文件时w
,任何具有该名称的现有文件都会被删除(参见此处)。虽然这很好,但str.upper(content)
导致问题的是您的语句,因为它实际上并没有对文件做任何事情 - 它大写content
但不会在任何地方写入(请注意,.upper()
如果需要,您也可以调用内容本身)。为了将内容写入文件,您需要使用outputFile
您创建的内容并content
使用该write()
方法写入文件。您还可以with
像编写文件时一样使用另一个语句,这将确保它也被正确关闭:
import os
def test():
os.chdir("C:/Users/David/Files")
files = os.listdir(".")
for x in files:
with open(x, "r") as inputFile:
content = inputFile.read()
with open(x, "wb") as outputFile:
outputFile.write(content.upper())
您也可以尝试以r+b
模式打开文件,读取然后覆盖seek
文件的开头并写入(文件长度应该相同,但truncate()
如果需要,您可以在读取后清除文件):
import os
def test():
x = 'testfile'
with open(x, "r+b") as inputFile:
content = inputFile.read()
inputFile.seek(0)
inputFile.write(content.upper())