1つのファイル操作
開いているファイルのための組み込み関数の導入前のファイル操作、ファイル操作がたくさんあり、読み取りおよび書き込み操作は、ファイルの三つの基本的な使用されています。ファイルのコピー、削除、移動がありますが、変更ファイルの所有者は、他の操作のグループです。以下の方法は、主にosモジュールとファイルモジュールshutil操作を依存しています。
2つのosモジュール
OSモジュールメソッドを書き込み、読み取り、また開放されているが、レベルが低すぎると、オープン組み込み関数を使用して読み取り、書き込み、両方の類似の方法を使用することが推奨されます。ここではosモジュールが提供するファイル操作のためのプロパティとメソッドは以下のとおりです。
プロパティまたはメソッド | 機能 |
os.name | オペレーティングシステムのタイプを返し、窓はLinuxはPOSIXで、NTのです。 |
os.uname() | オペレーティングシステムの情報を返し、* nixのサポート。 |
os.listdir( 'O:/ TEMP') | ディレクトリの内容のリストを返します。 |
os.stat(パス、*、dir_fd =なし、 follow_symlinks =トゥーレ) |
この方法の本質は、Linuxシステムstatコマンドを呼び出すことです。 パス:文字列またはバイトのパスまたはファイル記述子fd。 follow_symlinks:それは柔らかく、リンクの場合はTrueをFalseに、ファイル情報そのものを返します。 ソフトリンク自体が表示されます。 |
os.chmod(パス、モード、*、dir_fd =なし、 follow_symlinks =真) |
変更されたファイルのパーミッション、例えばos.chmod( 'テスト'、0o777) |
os.chown(パス、UID、GID) | 所有者は、ファイルのグループですが、十分な権限が必要です |
3 shutilモジュール
この方法により、ファイルが以前その後、内容がコピー処理を完了するために、ファイル内のターゲット・ファイルに書き込まれ、ソースファイルの内容を読み取るために、ファイルのオープン2つのオブジェクトを使用して、操作を説明しました。しかし、このデータにはコピーは過去にこの情報がないため、STAT情報(アクセス権など)を失われます。Pythonは、以下、ライブラリで提供されているファイルshutilを操作する方法を見て、先進的なファイル操作shutilライブラリを提供します。
3.1コピーのコピー
- copyfileobj(FSRC、fdst [長さ])
ファイルオブジェクトをコピーし、FSRCとfdstが開いて開かれたファイルオブジェクトで、内容をコピーします。fdst要件が書き込み可能。どの長さがバッファのサイズを表して指定します。
1 インポートshutil 2 3。開くと(' test.txtの'、' W + ' )F1 AS: 4 f1.write(' ABCD \ N1234 ' ) 5。 f1.flush() 6。 プリント(f1.tell()) 7。 F1。 (0)シーク #ファイルf1が書かれているコンテンツのファイルポインタの後には、ファイルのヘッダへのファイルポインタは、次のコピー処理を完了したい、ファイルの末尾を指します 8。 オープンして(「test1.txtという」、「W + 」)AS F2: 9 shutil.copyfileobj(F1、F2)
- コピーファイル(SRC、DST、*、=真はfollow_symlinks)
ファイルの内容はメタデータが含まれていませんコピーします。SRC、DSTファイルパス文字列、戻り先のファイルパス。それは、メタデータ、バイナリコピーとコンテンツはありませんが、基本的にcopyfileobj呼び出します。注意:先のファイルを上書きする方法をコピーします。
1 F = shutil.copyfile(' test.txtの'、' test1.txtという' ) 2 プリント(F)
- CopyModeの(SRC、DST、*、=真はfollow_symlinks)
ただ、ファイルのパーミッションをコピーします。
1 shutil.copymode(' test.txtの'、' test1.txtという' ) 2 プリント(はos.stat(' test.txtの' )) 3 プリント(はos.stat(' test1.txtという'))
- copystat(SRC、DST、*、=真はfollow_symlinks)
コピーメタデータは、STATは、パーミッションが含まれています。
- コピー(SRC、DST、*、follow_symlinks =真)
作成と修正時刻を含まない、文書、権限、およびメタデータの一部の内容をコピーします。コピーファイル、本質的に電話したCopyMode。
- COPY2(SRC、DST、*、=真はfollow_symlinks)
COPY2は、より多くのすべてのメタデータをコピーしますが、コピー以外のプラットフォームのサポートが必要です。コピーファイルとcopystatは能力に呼び出します。
- copytree(SRC、DST、*、シンボリックリンク= Falseを、無視する=なし、copy_function = COPY2、ignore_dangling_symlinks =偽)
再帰的なコピーディレクトリ。より多様な複製されたデータで、あるデフォルトCOPY2、。srcが、dstがディレクトリである必要があり、存在している必要がありますsrcは、dstが存在してはならない; = funcを無視し、呼び出し可能(SRC、名前)を提供 - > ignored_names。呼び出される関数を提供します。Srcはos.listdir(SRC)の結果はつまり、ファイル名がSRCに記載されている、戻り値のデータ型がファイルをフィルタリングするように設定され、名前、ソースディレクトリです。
1 #O:/低い温度を有していて、Bディレクトリ 2 DEF (SRC、名前)を無視: 3 IG =フィルタ(ラムダ X:x.startswith(' A ')、名前) #を無視する 。4 リターンSET(IG)を 5 6 shutil.copytree(' O:/ TEMP '、' O:/ TT / O '、=無視する無視します)
3.2 RM削除
- shutil.rmtree(パス、IGNORE_ERRORS = Falseを、ONERROR =なし)
再帰的に削除します。危険、注意-rf RMとして。rmtreeアトミックではない、それはエラーを除去することができる、それが中断され、それが削除された削除されました。IGNORE_ERRORSはエラーを無視し、真です。虚偽または有効にONERROR省略した場合、ONERROR関数受信機能、経路及びexecinfo、呼び出し可能です。
shutil.rmtree(' O:/ tmpに') #同様のrm -rf
3.3移動移動
- 移動(SRC、DST、copy_function = COPY2)
再帰的には、ターゲットパスに戻って、ターゲット・パスにディレクトリを、ファイルを移動します。その本質は、名前の変更をサポートし、動きは最初copytreeディレクトリで、その後、ソースディレクトリを削除しない場合は、使用os.rename方法です。COPY2のデフォルトの方法。