Python3で下記のファイルの操作方法を紹介します。
Pythonでは、ファイルのタイプは text と binary の二つに分けます。
ファイルの書き込みと読み取りもopen
関数で実現できます。
file = open("file_path", "mode")
...(読み書き処理)
file.close()
上記の記述で、open
でファイルを開けます。最後にclose
関数でクローズするのを忘れないようにしてください。
mode
の部分、
file = open('/path_to_file/file_name', 'r')
file.write("新規のファイルです。")
file.write("新しい内容を追加します。")
file.write("ここは三行目です。")
file.close()
手動でファイルを閉じたいなら、close
関数で閉じることはできます。
with
と一緒に使うのをお勧めします。処理終了後に自動的にファイルを閉じるので、手動でclose()
の必要はなくなります。
with open('/path_to_file/file_name', 'w') as file:
file.write("新規のファイルです。")
file.write("新しい内容を追加します。")
file.write("ここは三行目です。")
file = open('/path_to_file/file_name', 'r')
# ファイルの内容を全部出力する
print(file.read())
# ファイルの5番目文字までの内容を出力する
print(file.read(5))
# ファイルの1行目までの内容を出力する
print(file.readline())
# ファイルの1行目の3番目文字まで内容を出力する
print(file.readline(3))
# ファイルの一行ずつの内容を配列で出力する
print(file.readlines())
# > ['新規のファイルです。', '新しい内容を追加します。', 'ここは三行目です。']
f.close()
文字ファイルの操作応用上には、一行ずつ操作していく場合よくあります。その時に、下記のやり方を使えると思います。
with open(path) as f:
for line in f:
print(line) // 文字列を出力する
print(len(line)) // 文字列の長さを出力する
// ...他の操作、例えば、文字の置換など
ループ内、今何行目をやっているの(ループのindex)を知りたい場合、enumerate
関数を使えば良いと思います。
with open(path) as f:
for index, line in enumerate(f):
print(index) // indexを出力する
print(line) // 文字列を出力する
// ...他の操作、例えば、文字の置換など
os
やglob
のモジュールを使えば、ファイル一覧の取得はできます。
import os
list = os.listdir("path")
print(list)
import glob
files = glob.glob('path/*.txt')
print(files)
glob では、'?', '*'などの表現ができますので、ある程度の条件指定は可能です。例えば、ファイル種類(txt, csv, pdfなど)の指定はできます。
os
モジュールでファイル名の変更はできます。
import os
# os.rename('/path/original_file_name.type', '/path/new_file_name.type')
os.rename('/tmp/user.txt', '/tmp/customer.txt')
open
関数やos
モジュール、どちらでも確認できます。
try:
with open('file_name') as f:
print(f.readlines())
except IOError
print("ファイルにアクセスできません")
os.path
でパスが存在しているか、ファイルか、フォルダーかの確認ができます。
import os
os.path.exist('/path/of/file')