記事のディレクトリ
宣言モード
'r'読み取り用に開く(デフォルト)
'w'書き込み用に開く、ファイルを最初に切り捨てる
'x'新しいファイルを作成して書き込み用に開く
'a'書き込み用に開く、ファイルが存在する場合はファイルの最後に追加する
' b 'バイナリモード
' t 'テキストモード(デフォルト)
' + '更新(読み取りおよび書き込み)
のためにディスクファイルを開く' U 'ユニバーサルニューラインモード(非推奨)
読み取り操作
読み取り可能():
stream=open(r'a.txt')
result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
print(result)
読んだ():
stream=open(r'a.txt')
container=stream.read()
print(container)
注意:
open()
txtファイルの保存形式がANSIでない場合、デフォルトはgbkエンコーディングです。
読み取ると、次のエラーが発生します
次に、現時点で2つの解決策があります。1つ
目は、読み取りファイルのエンコーディングをANSIに設定することです。
2番目:ファイルのエンコーディングを変更せず、open関数の後にencoding = 'utf-8'を直接追加します
stream=open(r'a.txt',encoding='utf-8')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
for i in line:
print(i)
読み込まれた行():
stream=open(r'a.txt')
container=stream.readline()
print(container)
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
while True:
line=stream.readline()
print(line)
if not line:
break
(改行文字があるため、readlineがそれを読み取った後、別の改行文字が自動的に追加されるため、改行文字は2つだけです)
readlines():
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
print(line)
readlineで| \ nを確認します
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
for i in line:
print(i)
読み取り:
open(path/filename,'rt')
------->戻り値:ストリーム(パイプ)
container=stream.read()
---->チューブの内容を読む
注:path/filename
エラーが渡された場合、エラーが報告されます。FileNotFoundError
jpgを読む
注:デフォルトのopenモードは「rt」です。これはテキストドキュメントを読み取ることを意味し、すべてのバイナリファイルがテキストドキュメントに変換されることを意味します。したがって、画像を読み取るデフォルトの形式を維持することはできません。
stream=open(r'02.jpg','rb')
line=stream.read()
print(line)
stream=open(r'02.jpg')
line=stream.read()
print(line)
ストリームを形成することはできますが、読み取ることはできません。理由は上記で説明されています。
画像のデフォルトの読み取り方法を使用できない場合は、mode = 'rb'を使用する必要があります
総括する:
read()はすべてのコンテンツを読み取ります
readline()は一度に1行のコンテンツを
読み取りますreadlines()はすべての行を
読み取り、それらをリストに保存しますreadible()はそれが読み取り可能かどうかを決定します
ファイルを書き込む
書く():
stream=open(r'a.txt','w')
s='''
欢迎来到王者荣耀
敌军还有三秒到达战场
请做好准备'''
result=stream.write(s)
print(result)
stream.close()
モードは「w」です。これは、書き込み操作
方法を意味します。write
(content)は、毎回元のコンテンツをクリアしてから、現在のコンテンツを書き込みます。
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.write(a)
print(result)
stream.close()
改行には書かれていません。では、どのように改行を書きますか?
書き込み():
名前から一目でわかりますか、改行して書いてください。実際にはそうではなく、自動的にラップされることはなく、ただ反復可能です
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines([a,a,a,a])
print(result)
stream.close()
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines([a+'\n',a+'\n',a+'\n',a+'\n'])
print(result)
stream.close()
実際、このように書くことができます
result=stream.writelines(['comeon\n','comeon\n','comeon\n','comeon\n'])
この関数の名前に惑わされないでください。リストに追加するだけです。
pythonwritelines(iterable)
ラッピング効果はありません。個別に追加することしかできません。
追加された形式では、つまり、モードは「a」です。
stream=open(r'a.txt','a')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines(['comeon\n','comeon\n','comeon\n','comeon\n'])
print(result)
stream.close()
コピー操作
コピーjpg
固定ディレクトリ
with open(r'02.jpg','rb') as stream:
container=stream.read()
with open(r'03.jpg','wb') as wstream:
wstream.write(container)
カレントディレクトリ
os.path.dirname(__file__)#获取当前文件所在的文件目录 (绝对目录)
import os
with open(r'02.jpg','rb') as stream:
container=stream.read()
path=os.path.dirname(__file__)
path1=os.path.join(path,'03.jpg')
with open(path1,'wb') as wstream:
wstream.write(container)
os.path
システム内のものに対して一連の操作を実行して
os.path.dirname(__file__)
、現在のファイルのディレクトリがどこにあるかを示します
os.path.join(path,'')
。パスはファイル名ではなくディレクトリであるため、返される新しいパスはスプライスされた新しいパスです。
ファイル名の取得方法
stream=open(r'G:\.vs\02.jpg','rb')
line=stream.read()
print(stream.name)
file=stream.name
filename=file[file.rfind('\\')+1:]
print(filename)