我正在尝试将一组文件的内容转换为仅大写字符。继承了我到目前为止的代码:
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:
str.upper(content)
当我运行它时,它会删除文件的内容。
答案 0 :(得分:7)
您实际上并未编写该文件的内容。试试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
打开文件时,具有该名称的任何现有文件都将被删除(请参阅here)。虽然这很好,但是你的语句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())
答案 1 :(得分:1)
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(str.upper(content))
outputfile.close()
答案 2 :(得分:0)
import os
def test(x):
with open(x, "r+b") as file:
content = file.read()
file.seek(0)
file.write(content.upper())
如果您在x
下面是命令行版本,对单个文件执行相同的操作。您可以通过ls -1 | parallel python upper.py
import os, sys
with open(sys.argv[1], "r+b") as file:
content = file.read()
file.seek(0)
file.write(content.upper())