python 3ベースのファイル操作
18998 ワード
ファイルアクション
ファイルの読み書き操作は関数open()を借りて完了する必要があります
使用形式:open(ファイル名、アクセスモード)
アクセスモード対照表を次に示します
アクセスモード
説明
r
読み取り専用でファイルを開きます.ファイルのポインタはファイルの先頭に配置されます.これが既定のモードです
w
書き込み用のファイルを開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
a
追加用のファイルを開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.すなわち,新しいコンテンツは既存のコンテンツの後に書き込まれる.ファイルが存在しない場合は、新しいファイルを作成して書き込みます.
rb
読み取り専用のファイルをバイナリ形式で開きます.ファイルポインタはファイルの先頭に配置されます.これが既定のモードです.
wb
書き込み用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
ab
追加用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.すなわち,新しいコンテンツは既存のコンテンツの後に書き込まれる.ファイルが存在しない場合は、新しいファイルを作成して書き込みます.
r+
読み書き用のファイルを開きます.ファイルポインタはファイルの先頭に配置されます.
w+
読み書き用のファイルを開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
a+
読み書き用のファイルを開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.ファイルが開くと追加モードになります.ファイルが存在しない場合は、読み書き用の新しいファイルを作成します.
rb+
読み取り/書き込み用のファイルをバイナリ形式で開きます.ファイルポインタはファイルの先頭に配置されます.
wb+
読み取り/書き込み用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
ab+
追加用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.ファイルが存在しない場合は、読み書き用の新しいファイルを作成します.
ファイルの操作プロセス:
ファイルを開く(ファイルを作成)——>ファイルの読み書き——>ファイルを閉じる
ファイルの使用が完了したら、ファイルオブジェクトがオペレーティングシステムのリソースを占有し、オペレーティングシステムが同じ時間に開くことができるファイルの数も限られているため、ファイルを閉じなければなりません.
どんな方法で開くファイルは何しかできません.例えば、書く方法でファイルを開けてファイルを読み取ることはできません.
1、ファイルの読み込み
ファイルを開くtxt、読み取り専用モードで開く
2、ファイルの書き込み(新しいファイルを作成することもできます)
新しいファイルを開き、コンテンツを書き込みます(複数行のコンテンツ書き込みは三重引用符でテキスト形式を維持できます).
新しいファイルを作成
ファイルの最後に文字列を追加
3、ファイルの常用方法
3.1、readlines()
readlinesは、ファイル全体の内容を行単位で一度に読み取ることができ、各行のデータが要素であるリストを返します.
3.2、readline()
開いているファイルの最初の行を読み込む
3.3、write()
ファイルへの書き込みは、2段目をご覧ください
3.4、tell()
ファイルの現在位置、すなわちファイルポインタの現在位置を返します.ファイルの読み書き中に現在の場所を知りたい場合はtell()を使用して取得できます.
3.5、seek()
ファイルの読み書き中に別の場所から操作する必要がある場合はseek()を使用できます.seek(offset,from)には2つのパラメータoffsetがあります.オフセット量from:方向オフセット量が0未満で、左シフト(例えば-1は左シフト1ビット)を表します.オフセット量は0で、不動を表す.オフセット量が0より大きく、右シフト(例えば1は右シフト1ビット)を表す.ここでfromは方向を表します(0はファイルの先頭を表します;1は現在の位置を表します;2はファイルの末尾を表します)この方法の参考:https://blog.csdn.net/qq_42303254/article/details/86608779
3.6、read()
read()はデフォルトでファイル全体の内容を読み取るために使用され、read(3)パラメータを入力すると読み出した文字数になります
4、ファイル読み書き中国語(コード)と中国語復号
書き込みデータ(デフォルトwinシステム(中国)は中国語を保存し、符号化フォーマットはgbk)、macコンピュータまたはlinuxは問題ありません.
writeで中国語ファイルの内容を書き込む場合、encodingでutf-8を宣言していなければ、データを読み取るときも使わず、readなどの方法で読み取ることに成功し、表示しても問題ありません.ファイルを直接開くと文字化けして表示されます
writeで中国語の内容を書き込む場合、encodingでutf-8を宣言し、データを読み取る場合もencodingで宣言しなければなりません.そうしないと、エラーが発生したり、文字化けが読み取られたりします.
5、with文の内容を実行した後、自動的にファイルオブジェクトを閉じる
with文はファイルを開く時に別名をつけることができて、単一のファイルの別名の後ろはコロンで、複数のファイルはカンマと反スラッシュで開いて、隔てます;フォーマットは次のとおりです.
with open(ファイル名、モード)asエイリアス、
Open(ファイル名、モード)as別名:
操作内容
6、作成ファイルのバックアップ
ファイルバックアップの手順:ファイルを開く——>ファイルデータを読み込む——>ソースファイルのコピーファイルを作成する——>ファイルの読み込みをバックアップファイルにコピーする
サンプルコード:
7、ファイルの関連操作
ファイルシステムへのアクセスはPythonのosモジュールで実現することが多い.このモジュールはPythonがオペレーティングシステムの機能にアクセスする主なインタフェースである.
ファイルの名前の変更、削除、フォルダの作成などを行うには、pythonのOSモジュールをインポートし、ポイントメソッドで操作する必要があります.
7.1、ファイルの名前変更(兄弟ディレクトリファイルの下で実行)
フォーマット:os.rename('古いファイル名','新しいファイル名')
7.2、ファイルの削除
osモジュールのremove()はファイルの削除操作を完了できます
フォーマット:os.remove('ファイル名')
7.3、フォルダの作成
フォーマット:os.mkdir('フォルダ名')
7.4、現在のディレクトリを取得する
フォーマット:os.getcwd()
7.5、空のフォルダを削除する
フォーマット:os.rmdir('空のフォルダ名')
7.6、ディレクトリリストの取得
フォーマット:os.listdir()
7.7、操作ディレクトリを指定する(現在のディレクトリの下で、この方法で非現在のディレクトリの下でファイルを操作することができる)
フォーマット:os.chdir('ディレクトリ')
ファイルのその他の操作については、次を参照してください.https://blog.csdn.net/qq_42303254/article/details/86608779
8、一括操作ファイル
ファイルの一括作成
一括改名
9、ファイル操作でよく使うモード
一般的なオープンモード:
rはr+読み取り可能書き込みのみで、存在しないファイルは作成されず、上部から書き込みが開始され、以前のこの位置の内容w+読み取り可能書き込みが上書きされ、ファイルが存在する場合はファイル全体が上書きされ、存在しない場合はwが書き込みのみ作成され、ファイル全体が上書きされ、存在しない場合はaが書き込みのみ作成され、ファイル下部からの追加内容が存在しない場合はa+読み取り可能書き込み可能ファイル上部からの読み取り内容ファイル下部からの追加内容が存在しない場合は作成
しかし実験により、ここの
この項は、次のとおりです.https://www.cnblogs.com/yangshl/p/6285942.html
ファイルの読み書き操作は関数open()を借りて完了する必要があります
使用形式:open(ファイル名、アクセスモード)
アクセスモード対照表を次に示します
アクセスモード
説明
r
読み取り専用でファイルを開きます.ファイルのポインタはファイルの先頭に配置されます.これが既定のモードです
w
書き込み用のファイルを開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
a
追加用のファイルを開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.すなわち,新しいコンテンツは既存のコンテンツの後に書き込まれる.ファイルが存在しない場合は、新しいファイルを作成して書き込みます.
rb
読み取り専用のファイルをバイナリ形式で開きます.ファイルポインタはファイルの先頭に配置されます.これが既定のモードです.
wb
書き込み用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
ab
追加用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.すなわち,新しいコンテンツは既存のコンテンツの後に書き込まれる.ファイルが存在しない場合は、新しいファイルを作成して書き込みます.
r+
読み書き用のファイルを開きます.ファイルポインタはファイルの先頭に配置されます.
w+
読み書き用のファイルを開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
a+
読み書き用のファイルを開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.ファイルが開くと追加モードになります.ファイルが存在しない場合は、読み書き用の新しいファイルを作成します.
rb+
読み取り/書き込み用のファイルをバイナリ形式で開きます.ファイルポインタはファイルの先頭に配置されます.
wb+
読み取り/書き込み用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合は上書きします.ファイルが存在しない場合は、新しいファイルを作成します.
ab+
追加用のファイルをバイナリ形式で開きます.ファイルが既に存在する場合、ファイルポインタはファイルの最後に配置されます.ファイルが存在しない場合は、読み書き用の新しいファイルを作成します.
ファイルの操作プロセス:
ファイルを開く(ファイルを作成)——>ファイルの読み書き——>ファイルを閉じる
ファイルの使用が完了したら、ファイルオブジェクトがオペレーティングシステムのリソースを占有し、オペレーティングシステムが同じ時間に開くことができるファイルの数も限られているため、ファイルを閉じなければなりません.
どんな方法で開くファイルは何しかできません.例えば、書く方法でファイルを開けてファイルを読み取ることはできません.
1、ファイルの読み込み
ファイルを開くtxt、読み取り専用モードで開く
# filename
f = open('filename.txt','r')
print(f.read())
f.close()
2、ファイルの書き込み(新しいファイルを作成することもできます)
新しいファイルを開き、コンテンツを書き込みます(複数行のコンテンツ書き込みは三重引用符でテキスト形式を維持できます).
#
f = open('lianxi.txt','w')
f.write('''tar -xvf filename
select * from students
select * from students order by ageselect * from students order by age limit 1
create function liaotian ()''')
f.close()
新しいファイルを作成
# xinfile.txt
f = open('xinfile.txt','w')
f.close()
ファイルの最後に文字列を追加
f = open('lianxi.txt', "a")
f.write("nihao")
f.close()
3、ファイルの常用方法
3.1、readlines()
readlinesは、ファイル全体の内容を行単位で一度に読み取ることができ、各行のデータが要素であるリストを返します.
f = open('lianxi.txt','r')
print(f.readlines())
f.close()
===============================
:['tar -xvf filename
', 'select * from students
', 'select * from students order by ageselect * from students order by age limit 1
',
'create function liaotian ()']
3.2、readline()
開いているファイルの最初の行を読み込む
3.3、write()
ファイルへの書き込みは、2段目をご覧ください
3.4、tell()
ファイルの現在位置、すなわちファイルポインタの現在位置を返します.ファイルの読み書き中に現在の場所を知りたい場合はtell()を使用して取得できます.
f=open('/tmp/passwd',mode='r') # /tmp passwd
print(f.tell()) # 0
content=f.read()
print(content)
print(f.tell()) # 2287,
f.close() # ,
3.5、seek()
ファイルの読み書き中に別の場所から操作する必要がある場合はseek()を使用できます.seek(offset,from)には2つのパラメータoffsetがあります.オフセット量from:方向オフセット量が0未満で、左シフト(例えば-1は左シフト1ビット)を表します.オフセット量は0で、不動を表す.オフセット量が0より大きく、右シフト(例えば1は右シフト1ビット)を表す.ここでfromは方向を表します(0はファイルの先頭を表します;1は現在の位置を表します;2はファイルの末尾を表します)この方法の参考:https://blog.csdn.net/qq_42303254/article/details/86608779
f=open('/tmp/passwd',mode='r') # /tmp passwd
print(f.tell()) # 0
content=f.read()
print(content)
print(f.tell()) # 2287,
f.seek(1,0) # , ( 1
print(f.tell()) # 1
print(f.read()) #
f.close() # ,
3.6、read()
read()はデフォルトでファイル全体の内容を読み取るために使用され、read(3)パラメータを入力すると読み出した文字数になります
f = open('lianxi.txt','r')
#
print(f.read())
# 10
# print(f.read(10))
f.close()
4、ファイル読み書き中国語(コード)と中国語復号
書き込みデータ(デフォルトwinシステム(中国)は中国語を保存し、符号化フォーマットはgbk)、macコンピュータまたはlinuxは問題ありません.
writeで中国語ファイルの内容を書き込む場合、encodingでutf-8を宣言していなければ、データを読み取るときも使わず、readなどの方法で読み取ることに成功し、表示しても問題ありません.ファイルを直接開くと文字化けして表示されます
writeで中国語の内容を書き込む場合、encodingでutf-8を宣言し、データを読み取る場合もencodingで宣言しなければなりません.そうしないと、エラーが発生したり、文字化けが読み取られたりします.
# , , encoding=
k = open('lianxi.txt','a',encoding='utf-8')
k.write('
')
k.close()
# , encoding= ,
f = open('lianxi.txt', "r",encoding='utf-8')
print(f.read())
f.close()
5、with文の内容を実行した後、自動的にファイルオブジェクトを閉じる
with文はファイルを開く時に別名をつけることができて、単一のファイルの別名の後ろはコロンで、複数のファイルはカンマと反スラッシュで開いて、隔てます;フォーマットは次のとおりです.
with open(ファイル名、モード)asエイリアス、
Open(ファイル名、モード)as別名:
操作内容
'''
: /tmp/passwd /tmp/passwdbackup
'''
#
with open('/tmp/passwd') as f1,\
open('/tmp/passwdbackup','w+') as f2:
#
f2.write(f1.read())
#
f2.seek(0,0)
print(f2.read())
6、作成ファイルのバックアップ
ファイルバックアップの手順:ファイルを開く——>ファイルデータを読み込む——>ソースファイルのコピーファイルを作成する——>ファイルの読み込みをバックアップファイルにコピーする
サンプルコード:
# with
with open('filename','r') as f,\
open('filename[ ]','w') as ff:
ff.write(f.read())
7、ファイルの関連操作
ファイルシステムへのアクセスはPythonのosモジュールで実現することが多い.このモジュールはPythonがオペレーティングシステムの機能にアクセスする主なインタフェースである.
ファイルの名前の変更、削除、フォルダの作成などを行うには、pythonのOSモジュールをインポートし、ポイントメソッドで操作する必要があります.
7.1、ファイルの名前変更(兄弟ディレクトリファイルの下で実行)
フォーマット:os.rename('古いファイル名','新しいファイル名')
# OS
import os
#
os.rename('hm.txt','xuexi.txt')
7.2、ファイルの削除
osモジュールのremove()はファイルの削除操作を完了できます
フォーマット:os.remove('ファイル名')
import os
os.remove('hm.txt')
7.3、フォルダの作成
フォーマット:os.mkdir('フォルダ名')
import os
os.mkdir('filename')
7.4、現在のディレクトリを取得する
フォーマット:os.getcwd()
import os
print(os.getcwd())
7.5、空のフォルダを削除する
フォーマット:os.rmdir('空のフォルダ名')
import os
os.rmdir(' ')
7.6、ディレクトリリストの取得
フォーマット:os.listdir()
import os
print(os.listdir())
7.7、操作ディレクトリを指定する(現在のディレクトリの下で、この方法で非現在のディレクトリの下でファイルを操作することができる)
フォーマット:os.chdir('ディレクトリ')
import os
# /mnt/soft
os.chdir('/mnt/soft')
ret = os.getcwd()
print(ret)
ファイルのその他の操作については、次を参照してください.https://blog.csdn.net/qq_42303254/article/details/86608779
8、一括操作ファイル
ファイルの一括作成
import os
#
os.mkdir(' ')
#
os.chdir(' ')
print(os.getcwd())
# 10
for i in range(1,11):
#
f=open('piliangwenjian%s.txt' % i,'w')
#
f.close()
一括改名
import os
#
# 1.
os.chdir(' ')
# 2. ( ‘ ’ )
my_list = os.listdir()
print(my_list)
# 3. my_list
for filename in my_list:
newfilename = filename.replace('.txt','[ ].txt')
os.rename(filename,newfilename)
# ,
9、ファイル操作でよく使うモード
一般的なオープンモード:
rはr+読み取り可能書き込みのみで、存在しないファイルは作成されず、上部から書き込みが開始され、以前のこの位置の内容w+読み取り可能書き込みが上書きされ、ファイルが存在する場合はファイル全体が上書きされ、存在しない場合はwが書き込みのみ作成され、ファイル全体が上書きされ、存在しない場合はaが書き込みのみ作成され、ファイル下部からの追加内容が存在しない場合はa+読み取り可能書き込み可能ファイル上部からの読み取り内容ファイル下部からの追加内容が存在しない場合は作成
しかし実験により、ここの
r+
は不完全であることが分かった.この項は、次のとおりです.https://www.cnblogs.com/yangshl/p/6285942.html