Pythonの基本的なIO操作

宣言モード

'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)

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/CSNN2019/article/details/114558114