Python IOプログラミング
2914 ワード
ファイルの読み書きファイルを読むファイルは、ファイルの読み書き時にIOErrorが発生する可能性があるため、エラーが発生すると、後のf.close()は呼び出されません.したがって、エラーの有無にかかわらずファイルを正しく閉じるためにtryを使用することができます.finally実装:
以下の方法で簡単に書くことができます.
read()を呼び出すと、ファイルのすべての内容が一度に読み出され、ファイルが10 Gあるとメモリが爆発するので、念のためread(size)メソッドを繰り返し呼び出し、sizeバイトの内容を毎回最大で読み取ることができます.また、readline()を呼び出すと、1行のコンテンツを読み出すたびにreadline()を呼び出してすべてのコンテンツを1回読み出し、行ごとにlistを返すことができます.したがって、必要に応じて呼び出す方法を決定します.書き込みファイル
簡潔に書く
操作ファイルまたはディレクトリ
シーケンス化 Json 逆シーケンスJSONをStudentオブジェクトインスタンスに逆シーケンス化する場合、loads()メソッドはまずdictオブジェクトを変換し、次にobject_を入力します.hook関数はdictをStudentインスタンスに変換する責任を負う:
try:
f = open('/path/to/file', 'r') # 'rb', encoding='gbk', errors='ignore'
print(f.read())
finally:
if f:
f.close()
以下の方法で簡単に書くことができます.
with open('/path/to/file', 'r') as f:
print(f.read())
read()を呼び出すと、ファイルのすべての内容が一度に読み出され、ファイルが10 Gあるとメモリが爆発するので、念のためread(size)メソッドを繰り返し呼び出し、sizeバイトの内容を毎回最大で読み取ることができます.また、readline()を呼び出すと、1行のコンテンツを読み出すたびにreadline()を呼び出してすべてのコンテンツを1回読み出し、行ごとにlistを返すことができます.したがって、必要に応じて呼び出す方法を決定します.
>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()
簡潔に書く
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
操作ファイルまたはディレクトリ
# :
>>> os.path.abspath('.')
'/Users/michael'
# , : , windows linux
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# :
>>> os.mkdir('/Users/michael/testdir')
# :
>>> os.rmdir('/Users/michael/testdir')
#
>>> os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')
#
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# :
>>> os.rename('test.txt', 'test.py')
# :
>>> os.remove('test.py')
# shutil copyfile()
#
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Applications', 'Desktop', ...]
シーケンス化
import json
class Student(object):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
s = Student('Bob', 20, 88)
#
print(json.dumps(s, default=lambda obj: obj.__dict__))
def dict2student(d):
return Student(d['name'], d['age'], d['score'])
>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> print(json.loads(json_str, object_hook=dict2student))
<__main__.student object="" at="">