詳細なPythonIOプログラミング

ファイルの読み取りと書き込み

ファイルの読み取り###

try:
 # 窓の下のutf8
 f =open('./README.md','r', encoding='utf8', errors='ignore')print(f.read())finally:
 f and f.close()

# で単純化
withopen('./README.md','r', encoding='utf8')as f:print(f.read())

# 大きなファイルを繰り返し読み取る
withopen('./README.md','r', encoding='utf8')as f:
 # readline()一度に1行ずつ読むことができます
 for line in f.readlines():
 # 最後に置く'\n'削除
 print(line.strip())
  
# バイナリファイルを読み取る
f =open('/Users/michael/test.jpg','rb')
f.read() # b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' #バイトの16進表現

ファイルを書き込む

ファイルの書き込みはファイルの読み取りと同じです。唯一の違いは、open()関数が呼び出されると、テキストファイルの書き込みまたはバイナリファイルの書き込みを示すために識別子「w」または「wb」が渡されることです。

write()を繰り返し呼び出してファイルに書き込むことができますが、f.close()を呼び出してファイルを閉じる必要があります。ファイルを書き込むとき、オペレーティングシステムは多くの場合、データをすぐにディスクに書き込むのではなく、メモリキャッシュに入れ、空きができたらゆっくりと書き込みます。 close()メソッドが呼び出された場合にのみ、オペレーティングシステムは、書き込まれていないすべてのデータがディスクに書き込まれることを保証します。 close()の呼び出しを忘れると、データの一部のみがディスクに書き込まれ、残りは失われます。したがって、保険を取得するには、withステートメントを引き続き使用してください

withopen('./test2.md','a', encoding='utf8')as f:
 f.write('Hello, python!')
 
# ファイル内の文字を置き換え、helloをhiに置き換えてから、コンテンツをメモリに読み込みます
withopen('test.txt','r')as f:
 s = f.readlines()
# 次に、ファイルを開き、メモリ内のコンテンツをreplaceに置き換えて、ファイルに書き込みます。
withopen('test.txt','w')as w:for i in s:
 w.write(i.replace('こんにちは','hi'))

StringIOおよびBytesIO

StringIO

strをメモリに読み書きします。

from io import StringIO
f =StringIO()
f.write('hello')
f.write(' ')
f.write('world!')print(f.getvalue()) #このメソッドは、書き込まれたstrを取得するために使用されます。

f =StringIO('Hello!\nHi!\nGoodbye!')while True:
 s = f.readline()if(s ==''):breakprint(s.strip())

BytesIO

メモリ内のバイトの読み取りと書き込み

from io import BytesIO
f =BytesIO()
f.write('中国語'.encode('utf-8')) #書かれているのはstrではなくUTFです-8バイトのエンコーディング。
print(f.getvalue())

f =BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
f.read() # b'\xe4\xb8\xad\xe6\x96\x87'

オペレーティングファイルとディレクトリ##

import os
os.name #posixの場合は、システムがLinux、Unix、またはMac OS Xであることを意味し、ntの場合は、Windowsシステムであることを意味します。
os.uname() #うなめに注意()機能はWindowsでは使用できません

環境変数

オペレーティングシステムで定義された環境変数はすべて変数os.environに保存されます

import os
os.name
' nt'
os.environ #環境変数を取得する
os.environ.get('PATH')
os.environ.get('x','default')

ファイルとディレクトリを操作する

ファイルとディレクトリを操作するための関数の一部はosモジュールに配置され、関数の一部はos.pathモジュールに配置されます。

# 現在のディレクトリの絶対パスを表示する:
os.path.abspath('.')
# 現在のディレクトリ名
os.path.dirname(os.path.abspath(__file__))
# ディレクトリに新しいディレクトリを作成し、最初に新しいディレクトリのフルパスを表示します:
os.path.join('/Users/michael','testdir') # '/Users/michael/testdir'
# 次に、ディレクトリを作成します:
os.mkdir('/Users/michael/testdir')
# ディレクトリを削除する:
os.rmdir('/Users/michael/testdir')
# パス分割
os.path.split('/Users/michael/testdir/file.txt')
# ファイル拡張子を取得する
os.path.splitext('/path/to/file.txt')
# ファイル名を変更する
os.rename('test.txt','test.py')
# ファイルを削除する
os.remove('test.py')
# OSモジュール
# osモジュールは、オペレーティングシステムを操作するためのものです。このモジュールを使用するには、最初にモジュールをインポートする必要があります。
import os
# getcwd()現在の作業ディレクトリを取得する(現在の作業ディレクトリは、デフォルトで現在のファイルが配置されているフォルダです。)
result = os.getcwd()print(result)
# chdir()現在の作業ディレクトリを変更する
os.chdir('/home/sy')
result = os.getcwd()print(result)open('02.txt','w')
# 操作中に完全なパスを書き込む場合は、デフォルトの作業ディレクトリを考慮する必要はありません。,実際の書き込みパスに従ってください
open('/home/sy/ダウンロード/02.txt','w')
# listdir()指定されたフォルダ内のすべてのコンテンツの名前リストを取得します
result = os.listdir('/home/sy')print(result)
# mkdir()フォルダーを作る
# os.mkdir('girls')
# os.mkdir('boys',0o777)
# makedirs()フォルダを再帰的に作成する
# os.makedirs('/home/sy/a/b/c/d')
# rmdir()空のディレクトリを削除する
# os.rmdir('girls')
# removeirsは、フォルダを再帰的に削除し、空のディレクトリにする必要があります
# os.removedirs('/home/sy/a/b/c/d')
# rename()ファイルまたはフォルダの名前を変更
# os.rename('/home/sy/a','/home/sy/alibaba'
# os.rename('02.txt','002.txt')
# stat()ファイルまたはフォルダの情報を取得する
# result = os.stat('/home/sy/PycharmProject/Python3/10.27/01.py)
# print(result)
# system()システムコマンドを実行する(ハザード機能)
# result = os.system('ls -al') #非表示のファイルを取得する
# print(result)
# 環境変数
'''
環境変数はコマンドのコレクションです
オペレーティングシステムの環境変数は、オペレーティングシステムがシステムコマンドの実行時にコマンドを検索するディレクトリのコレクションです。
'''
# getenv()システム環境変数を取得する
result = os.getenv('PATH')print(result.split(':'))
# putenv()環境変数にディレクトリを追加します(一時的な増加は、現在のスクリプトに対してのみ有効です)
# os.putenv('PATH','/home/sy/ダウンロード')
# os.system('syls')
# exit()ターミナルを終了するコマンド
# osモジュールの一般的な値
# curdirは現在のフォルダを表します.通常の状況では現在のフォルダを省略できることを示します
print(os.curdir)
# pardirは上位レベルのフォルダを表します..上位フォルダを省略できないことを示します!print(os.pardir)
# os.mkdir('../../../man')#相対パスは現在のディレクトリから検索されます
# os.mkdir('/home/sy/man1')#絶対パスはルートディレクトリから検索されます
# nameオペレーティングシステムを表す名前文字列を取得します
print(os.name) #posix -linuxまたはunixシステムnt-ウィンドウシステム
# sepはシステムパス間隔シンボルウィンドウを取得します- \ linux -/print(os.sep)
# extsepファイル名とサフィックスウィンドウの間の間隔記号を取得します& linux -.print(os.extsep)
# linesepは、オペレーティングシステムウィンドウのnewlineシンボルを取得します-  \r\n linux/unix -  \n
print(repr(os.linesep))
# osモジュールをインポートします
import os
# 次のコンテンツはosです.パスサブモジュールのコンテンツ
# abspath()相対パスを絶対パスに変換します
path ='./boys'#比較的
result = os.path.abspath(path)print(result)
# dirname()フルパスのディレクトリ部分を取得します&basename()フルパスの主要部分を取得します
path ='/home/sy/boys'
result = os.path.dirname(path)print(result)
result = os.path.basename(path)print(result)
# split()ディレクトリ部分とメイン部分に完全なパスを切り取ります
path ='/home/sy/boys'
result = os.path.split(path)print(result)
# join()2つのパスを1つに結合します
var1 ='/home/sy'
var2 ='000.py'
result = os.path.join(var1,var2)print(result)
# splitext()パスをファイルサフィックスと他の2つの部分にカットします,主にファイルサフィックスを取得するために使用されます
path ='/home/sy/000.py'
result = os.path.splitext(path)print(result)
# getsize()ファイルのサイズを取得する
# path ='/home/sy/000.py'
# result = os.path.getsize(path)
# print(result)
# isfile()ファイルか確認してください
path ='/home/sy/000.py'
result = os.path.isfile(path)print(result)
# isdir()フォルダか確認してください
result = os.path.isdir(path)print(result)
# islink()リンクかどうかを確認してください
path ='/initrd.img.old'
result = os.path.islink(path)print(result)
# getctime()作成時間を取得する
# getmtime()変更時間を取得する
# getatime()アクティブな時間を取得する
import time
filepath ='/home/sy/ダウンロード/chls'
result = os.path.getctime(filepath)print(time.ctime(result))
result = os.path.getmtime(filepath)print(time.ctime(result))
result = os.path.getatime(filepath)print(time.ctime(result))
# exists()パスが実際に存在するかどうかを確認します
filepath ='/home/sy/ダウンロード/chls'
result = os.path.exists(filepath)print(result)
# isabs()パスが絶対パスであるかどうかを確認します
path ='/boys'
result = os.path.isabs(path)print(result)
# samefile()2つのパスが同じファイルであるかどうかを確認します
path1 ='/home/sy/ダウンロード/001'
path2 ='../../../ダウンロード/001'
result = os.path.samefile(path1,path2)print(result)
# os.environは、システム環境変数の組み込み値を取得および設定するために使用されます
import os
# システム環境変数getenvを取得します()効果
print(os.environ['PATH'])
# システム環境変数putenvを設定します()
os.environ['PATH']+=':/home/sy/ダウンロード'
os.system('chls')
# 現在のディレクトリファイル名を一覧表示します
[ x for x in os.listdir('.')if os.path.isdir(x)]
# すべてリストする.pyファイル
[ x for x in os.listdir('.')if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
# ウォークリターン:タプル(dirpath:パス,dirnames:パスの下のディレクトリのリスト, filenames:このパスの下にあるファイルのリスト)for fpathe,dirs,fs in os.walk(path):for f in fs:print(os.path.join(fpathe,f))

注:文字列を直接接続してパスを分割する必要はありません。これにより、さまざまなオペレーティングシステムのパスセパレータを正しく処理できます。

Recommended Posts

詳細なPythonIOプログラミング
Python IO
Pythonネットワークプログラミング
PythonIOポート多重化の詳細な説明
12.Python3でのネットワークプログラミング
詳細なPythonループのネスト
PythonGUIインターフェイスプログラミング
Python機能プログラミングについて話す
PythonプログラミングPycharm高速学習
GooglePythonプログラミングスタイルガイド
一般的に使用されるPython3スクリプトプログラミング.md
Pythonオブジェクト指向プログラミングの分析
XTUプログラミングPythonトレーニング3
ブラックハットプログラミングアプリケーションPython2
pythonバックトラッキングテンプレートの詳細な説明
Pythonプラグインメカニズムの詳細な実装
pythonシーケンスタイプの詳細な説明
Pythonは詳細な開発のためにC / C ++を組み込んでいます
詳細な並べ替えアルゴリズム(Pythonで実装)
Pythonエラー処理は詳細な説明を主張します
Python1のブラックハットプログラミングアプリケーション
Pythonでの辞書の詳細な使用法
pythonオブジェクト指向プログラミングを理解する方法
Pythonの古典的なプログラミングの質問:文字列の置換
ubuntu18用のpython3.7のインストールに関する詳細なチュートリアル
プログラミングの基礎なしでpythonを学ぶことはできますか
Pythonガベージコレクションメカニズムの詳細な分析
属性からプロパティまでのPython詳細な説明
Python仮想環境venvの使用法の詳細な説明
Pythonマルチプロセスプログラミングの一般的な方法の分析
pythonコマンドの-uパラメーターの詳細な説明
Python推測アルゴリズムの問題の詳細な説明