Pythonシステム操作(sys、os)モジュール


Sysライブラリ
Sysモジュールは、Python実行時の構成およびリソースを処理するための多くの関数メソッドおよび変数を含む非常に実用的なサービスのセットを含み、python解釈器などの前のプログラム以外のシステム環境と対話することができる.
Sysモジュールの一般的な関数リスト(import sys)
関数#カンスウ#
説明
dir(sys)
dir()メソッドモジュールで使用可能なメソッドを表示します.注意:エディタでは、コードの符号化方法を事前に宣言することに注意してください.そうしないと、中国語が文字化されません.
sys.argv
プログラム外部からプログラムへのパラメータの転送を実現
sys.exit([arg])
プログラム中間の終了、arg=0が正常終了
sys.getdefaultencoding()
システムの現在のエンコードを取得します.一般的にデフォルトはasciiです.
sys.setdefaultencoding()
システムのデフォルト符号化を設定し、dir(sys)を実行するとこの方法は見えません.解釈器で実行するかどうかは、reload(sys)を実行してからsetdefaultencoding('utf 8')を実行し、システム符号化をutf 8に設定することができます.
sys.getfilesystemencoding()
ファイルシステムのエンコード方式を取得し、Windowsでは'mbcs'、macでは'utf-8'を返します.
sys.path
指定したモジュール検索パスの文字列セットを取得し、作成したモジュールを取得したパスの下に置くことで、プログラム内のimport時に正しく見つけることができます.
sys.platform
現在のシステムプラットフォームを取得します.
sys.stdin sys.stdout sys.stderr
stdin、stdout、およびstderr変数には、標準I/Oストリームに対応するストリームオブジェクトが含まれます.出力をよりよく制御する必要があり、printが要求を満たすことができない場合は、それらが必要です.それらを置き換えたり、出力をリダイレクトしたり、他のデバイス(device)に入力したり、非標準的な方法で処理したりすることもできます.
sys.modules
pythonが起動するとメモリにロードされるグローバル辞書です.プログラマが新しいモジュールをインポートするたびにsys.modulesはモジュールを自動的に記録します.モジュールを2回目に再インポートすると、pythonは辞書で直接検索され、プログラムの実行速度が速くなります.辞書が持つすべての方法を持っています.
 
osライブラリ
osモジュールはプログラムとオペレーティングシステムのインタラクションを担当し、オペレーティングシステムの下部にアクセスするインタフェースを提供します.
osモジュールの一般的な関数リスト(import os)
関数#カンスウ#
説明
os.environ
環境変数を含むディクショナリのマッピング関係
os.name
現在使用されているプラットフォームを表示
os.sep
現在のプラットフォームの下のパス区切り文字を表示
os.linesep
現在のプラットフォームで使用されている行の終端を指定します.
os.remove('filename')
ファイルを削除
os.rename("oldname","newname")
ファイル名の変更
os.getcwd()
現在のpythonスクリプトのワークパスを表示
os.chdir(dir)
現在のディレクトリを変更して、windowsの下で転義に使うことに注意します
os.listdir('dirname')
指定したディレクトリの下にあるすべてのファイルとディレクトリ名を返します.
os.makedirs('dirname/dirname')
マルチプライヤ・ディレクトリの生成
os.rmdir('dirname')
単一レベルディレクトリの削除
os.getlogin()
ユーザーのログイン名を取得
os.getenv(‘key’)
環境変数構成を取得
os.putenv(‘key’)
環境変数の設定
os.system()
shellコマンドを実行します.注意:ここでは新しいshellを開き、コマンドを実行します.コマンドが終了したら、shellを閉じます.
例:
        os.mkdir('/tmp/xx'),os.system("echo'hello' >/tmp/xx/a.txt"),os.listdir('/tmp/xx') 
        os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt'),os.remove('/tmp/xx/b.txt'),os.rmdir('/tmp/xx')
pythonで簡単なshellを作成します.
#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline();
while cmd:
os.system(cmd);
cmd = sys.stdin.readline();

os.path
os.path作成プラットフォームに関係のないプログラム
関数#カンスウ#
説明
os.path.abspath()
絶対パスosを取得する.path.abspath("1.txt") == os.path.join(os.getcwd(),"1.txt")
os.path.split()
ディレクトリ名のディレクトリセクションとファイル名セクションを分離します.
os.pardir
現在のプラットフォームの下のレベルのディレクトリを表す文字..
os.path.join(path, name)
接続ディレクトリとファイル名.
os.path.basename(path)
ファイル名を返す
os.path.dirname(path)
ファイルパスを返す
os.path.getctime("/root/1.txt")
は、1を返します.txtのctime(作成時間)タイムスタンプ
os.path.exists(os.getcwd())
ファイルが存在するかどうかを判断する
os.path.isfile(os.getcwd())
ファイル名かどうかを判断します.1は0いいえ.
os.path.isdir('c:\Python\temp')
ディレクトリかどうかを判断します.1は0いいえ.
os.path.islink('/home/111.sql')
シンボル接続かどうかwindowsでは使用できません
os.path.ismout(os.getcwd())
ファイルシステムのインストールポイントかどうか、windowsの下で使用できません
os.path.samefile(os.getcwd(), '/home')
2つのファイル名が同じファイルを指しているかどうか見てみましょう.
os.walk()
与えられたディレクトリの下にあるすべてのディレクトリとファイルを遍歴することができます.
os.path.walk('/home/huaying', test_fun, "a.c")
/home/huayingのすべてのサブディレクトリにこのディレクトリが含まれ、各ディレクトリに対して関数test_が呼び出されます.fun.
os.walkとos.path.walkの違い
関数宣言:os.walk(top, topdown=True,οnerrοr=None)
1、パラメータtopは、巡回する必要があるトップディレクトリのパスを表します.
2、パラメータtopdownのデフォルト値は「True」で、まず上位ディレクトリの下のファイルを返し、次にサブディレクトリの中のファイルを巡回することを意味します.topdownの値がFalseの場合は、サブディレクトリ内のファイルを巡回してから、最上位ディレクトリの下のファイルに戻ることを示します.
3、パラメータonerrorのデフォルト値は「None」で、ファイルの遍歴を無視したときのエラーを表します.空でない場合は、カスタム関数プロンプトのエラーメッセージを指定してから、ループを続行するか、例外を投げ出してループを中止します.
戻り値:関数は3つの要素を含むメタグループを返します.この3つの要素は、パス名、パスサブディレクトリリスト、ディレクトリ下のファイルリストです.
関数宣言:os.path.walk(top, func, arg)
1、パラメータtopは、遍歴が必要なディレクトリパスを表します.
2、パラメータfuncはコールバック関数、すなわち遍歴経路を処理する関数を表す.コールバック関数とは、ある関数のパラメータとして使用され、ある時間にトリガーされると、プログラムは定義されたコールバック関数を呼び出してタスクを処理します.注意:walkのコールバック関数には3つのパラメータが必要です.1番目のパラメータはosです.path.walkのパラメータarg,2番目のパラメータはディレクトリdirname,3番目のパラメータはファイルリストnamesを表す.注意:os.path.walkのコールバック関数のファイルリストはosではありません.walk()のようにサブディレクトリとファイルを別々にするのではなく,コールバック関数でファイルかサブディレクトリかを判断する必要がある.
3、パラメータargはコールバック関数に渡されるメタグループであり、コールバック関数に処理パラメータを提供し、argは空であってもよい.コールバック関数の1番目のパラメータは、この入力されたメタグループを受信するために使用される.
プロシージャ:topをルートとするディレクトリツリーの各ディレクトリ(top自体を含む)は、パラメータ(arg,dirname,names)でコールバック関数functを呼び出します.パラメータdirnameはアクセスするディレクトリを指定し、パラメータnamesはディレクトリ内のファイル(os.listdir(dirname)から得られる)をリストします.コールバック関数は、namesがdirnameの下にアクセスするディレクトリの設定を変更することができます.たとえば、ツリーの一部にアクセスしないようにします.(namesによって関連付けられたオブジェクトは、delまたはslice割り当てを使用して適切な場所で変更する必要があります.)注意:シンボルがディレクトリに接続されると、サブディレクトリとして処理されないため、walk()はアクセスしません.接続にアクセスするディレクトリはosでなければなりません.path.islink(file)とos.path.isdir(file)はそれらを識別し、walk()を呼び出す必要があります.
違い:os.path.walk()とos.walk()で生成されたファイル名のリストは同じではありません.os.walk()はディレクトリツリーの下のディレクトリパスとファイルパスを生成し、os.path.walk()は、ファイルパス(サブディレクトリとファイルの混合リスト)のみを生成します.
プログラムの例:
#coding=utf-8
'''
Created on 2017 3 4 
 
@author: zxt
'''
importos
 
#            ..
print(os.path.pardir)
 
# os.path.abspath(__file__)  :    
#       (        )
print(os.path.abspath(__file__))
 
# os.path.split(os.getcwd())                        。
#       (     )
print(os.getcwd());
print(os.path.split(os.path.abspath(__file__))[0]) #   
print(os.path.dirname(os.path.abspath(__file__)))#       
 
#           
print(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.pardir) )
 
#      
#          ,    (os.path.dirname():      ,         )
print(os.path.dirname(os.getcwd()));
print(os.path.abspath(os.path.join(os.getcwd(), os.path.pardir)) )