iostream:
ファイルIO:
一般的なシステムは、ディスクに直接ファイルを操作することができない
操作が完了するために提供されるシステム・インターフェースを介して
:ファイルの基本的な操作
、ファイルのインスタンスオブジェクトによってファイル操作のために達成し
たオブジェクトファイルのインスタンス:ファイル記述子
のオープンファイル機能を(ファイルパス、動作モード)オープン
オープンパラメータ:
ファイル名(元の文字列を利用する):ファイルの相対または絶対パス
識別子:ファイル操作モードで開いているファイルを示すが
読み取る:R&LT(読み取り専用)RBを(リードバイナリ)R +(読み書き)をRT(リードテキスト)
ライト(書き込みのみ)WB + W(書き込みバイナリ)(W R)重量(書かれたテキスト)wが
添加される:AB(ファイルストリームポインタの位置に+ファイルであります終わり(EOF)で
オープン関数について:
例外が例外IOErrorスローされたときに存在しており、詳細なエラーコードと詳細与えるものではありませんファイルを開くときに
、FD =オープン(「A.TXTを」、 R「」)#R とr +ファイルはでないでしょう存在のFileNotFoundError投げ
、他の2つのモデルが直接ファイルを作成しますが、それぞれがwのファイル(ファイルは、以前の内容を上書き存在する場合)をクリアします
移動したいので、ファイルが開かれるモード、最後にファイルポインタをファイルの先頭にファイルポインタ
ファイルオープン処理の後に#を読み出すことができるファイルの内容全体を読み取る()、Pythonは表しSTRオブジェクト(STR戻り値)とメモリの内容を読み取るため
fd = open('hello.txt','w+')
fd.write('hello world!')
fd.close()
fd1 = open('hello.txt','r+')
str2 = fd1.read()
print(str2)
fd1.close()
クローズ機能を使用してファイルを閉じるには、ファイルの読み取りおよび書き込み操作が完了した後
のファイルは例外IOErrorを生成する可能性のある読み取りおよび書き込みのために、エラー一度、後者f.close()が呼び出されません。
そのため、エラーが適切に近いファイル、我々は試して使用できる可能性かどうかを確実にするために...最終的に実現されます。
try :
fd = open('hello.txt','r+')#如果open失败会抛出异常,会导致close不执行,
#所以不论打开成功与否都要正确关闭文件
print(fd.read())
finally:
if fd :
fd.close()
ファイルIOの操作は簡単です:
テキストManagerで使用するには、上記を省略することができるしてみてください。。。fianlly。。。
with open('file_path','r+') as f:
print(f.read())
#当open函数打开的文件不存在时候,会抛出FileIOError的异常
#read()函数:一次读取所有内容
try:
with open('hello1.txt','r') as f:
print(f.read())
except Exception as e:
print('file error:',e)
関連文書が読み取り操作と書き込み:
読み:
リード():一時間は、ファイルのすべての内容を読んで、ファイルサイズが10Gよりも大きい場合、それはメモリが破裂する
保険期間中に繰り返し(サイズ)を読み取ると呼ばれ、それぞれの読み取りを実現する方法概要は、固定長(バイト単位のサイズ)を取ります
realine():一次性读取文件中一行的内容(所有字符,包含结尾的回车)
readlines():读取文件所有内容,将每行的内容存放在列表中作为一个元素
ファイルのようなオブジェクト(意味する)
、これはオブジェクトのread()メソッドを有するopen()関数が返すような、Pythonでオブジェクトファイルなどと呼ばれます。ファイルに加えて、しかし
、メモリのバイトのストリーム、ネットワークフロー、のような定義が流れることができます。ファイルのようなオブジェクトは、ちょうどライン上のread()メソッドを記述し、特定のクラスを継承する必要はありません。
オブジェクトのように - あなたはワットモードを使用する場合は、オブジェクトは、ファイルと呼ばれている()メソッドを、読んではありません
with open('hello.txt','w') as f:
print(f.read()) #io.UnsupportedOperation: not readable
書き込み:近接していない操作は、直接書き込み、しませんでした完全なファイルにつながる可能性がある場合、最初のファイルは、そのようなアイドル時間など、メモリに書き込まれ、ディスクファイルに書き込まれる
ので、近いあなたは、ファイルが完全に書き込まれていることを確認することができ失うことができません!!!
書き込み(文字列):ファイルへの書き込み、関数はファイルに書き込まれたバイト数を返します。
writelines(リスト):ファイルの行に書かれたリストの要素
import os
f = open('hello.txt', 'r+') # 以读写模式打开urls.txt文件
url = '' # 保存当前读上来的文本
while True:
url = f.readline() # 从urls.txt文件读一行文本
url = url.strip() # 将最后的行结束符去掉
if url == '': # 当读上来的是空串,结束循环
break;
else:
print(url) # 输出读上来的行文本
print('--------------')
f.seek(0) # 将文件指针重设置为0
print(f.readlines()) # 读urls.txt文件中的所有行
f.write('http://baidu.com' + os.linesep) # 向urls.txt文件中添加一个新行
f.close() # 关闭文件
f = open("hello.txt", 'a+') # 使用“a+模式”再次打开urls.txt文件
# 定义一个要写入urls.txt文件的列表
urlList = ['https://google.com' + os.linesep,'https://jd.com' + os.linesep]
f.writelines(urlList) # 将urlList写入urls.txt文件
f.close() # 关闭urls.txt文件
ファイルポインタの位置変更
、Python言語ファイルが開かれたが、デフォルトでは、ファイルの内容を識別するための読み取り位置ポインタがあるだろう、
求める()関数を使用すると、読み取りポインタファイルに再配置することができます。:関数が使用シーク
f.seek(オフセット[、orgset])
オフセットは、ビット数がポインタの動きを読み取る表し、各ビットが1つのバイトに対応し、正、負であってもよいとすることができます。
orgset値が0、1又は2であってもよく、任意であり、
0のデフォルト値で、ファイルヘッダからのできないライト、ポインタオフセットビットを移動するために、開始を示し、
1ビットを現在のオフセット位置から読み出しポインタを表し、
2表しオフセットは、ファイルの終わりから移動リードポインタ・ビット。
もしorgsetはあなたが真ん中や、ファイルの末尾からしたい場合は、ポインタが動き始める読みになることを意味デフォルト0を取らないことに留意されたい
IO:それ以外の場合は、出力エラーランタイムを入力するように求められます、ファイルがバイナリだけ開いています。 UnsupportedOperationは:
ゼロ以外CUR-相対シークを行うことはできません。
使用FileInputクラスのオブジェクトは、ファイルを読むために
すべての時間の関数は、リスト内のファイルの内容を読み込みますので、あなたが非常に大きなファイルを読むために必要がある場合は、使用readlines機能は、あまりにも多くのメモリを取るだろう、データのリストを配置する必要がありますメモリなので、非常にメモリを占有します。
ソリューション:
この方法は、ループと行のreadlineによって行を読み取る方法のために使用することができます。
2.方法を用いるFileInputクラスモジュールの入力機能は、指定されたファイルを読み取ることができます。
FileInputクラスの入力方法はFileInputクラスが使用されるオブジェクトファイルFileInputクラスオブジェクトのキャッシュメカニズムを指定するための適切な方法によって読み取ることができるオブジェクトを返し、そうreadlinesメモリ機能よりも多くのリソースファイルを保存し、一度のすべての内容を読んでいないだろう。
ファイルの読み取りに使用FileInputクラスのオブジェクト
import fileinput
fileobj = fileinput.input('./files/urls.txt') # 使用input方法打开urls.txt文件
print(type(fileobj)) # 输出fileobj的类型
print(fileobj.readline().rstrip()) # 读取urls.txt文件第1行
for line in fileobj: # 通过for循环输出urls.txt文件的其它行
line = line.rstrip()
if line != '': # 如果file不等于空串,输出当前行号和内容
print(fileobj.lineno(),':',line)
else:
# 输出当前正在操作的文件名
print(fileobj.filename()) # 必须在第一行读取后再调用,否则返回None
# 注意:filename方法必须在第1次读取文件内容后调用,否则返回None
#1リード及びライトのテキストデータ:
#1.1.1テキストデータ処理、ファイルは、異なる符号化フォーマットに直面する必要があるかもしれません
#1.1.2ソリューション:
#をRTモードでテキストファイルを開く()関数を使用して読み取る:
とオープン( 'somefile.txt'、MODE = 'RT')FD AS:
プログラムへのデータ= fd.read()#使い捨て読み取り、ファイルのすべての内容;プロトタイプ:読み取り([サイズ])、サイズ : 読み取りバイト取ら
印刷(データ)
'' '
Hello Worldの
ハローPythonの
みなさん、こんにちは
こんにちはみんな
' ''
(「somefile.txt」、「RT」)とのオープンASはfdが:
ラインのためのFDに:#コンテンツラインラインでファイルオブジェクトを通じて
印刷(ライン)#各ラインを印刷する
「」 '
こんにちは世界
こんにちはパイソン
みなさん、こんにちは
みなさんこんにちは
「」」
#系统默认的文本编码格式可以通过sys.getdefaultencoding()来查看,这项设定都被设定为utf-8。
#如果已知了某个文件额编码格式,可以通过对open()的参数encoding进行修改来满足编码格式的要求。
#open()中的默认参数errors可以进行修改‘replace’和‘ignore’
#replace:将错误处替换为?
#ignore:忽略错误将错误替换为‘’