実際にファイルの内容を書いているわけではありません。試してみてください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
の先頭に ing して書き込み、読み取り、上書きすることもできます (ファイルの長さは同じであるtruncate()
必要がありますが、必要に応じて読み取り後にファイルをクリアするために使用できます)。
import os
def test():
x = 'testfile'
with open(x, "r+b") as inputFile:
content = inputFile.read()
inputFile.seek(0)
inputFile.write(content.upper())