python標準ライブラリ概要(二)osモジュール

6327 ワード

プログラミングを学ぶ過程で、私はずっと簡単な考え方に従って、もっと良いコードを書いて、もっと良いコードを書いて、pythonは私の主な開発ツールとして、python標準ライブラリを深く理解する必要があります.
  • 標準ライブラリにすでにある車輪をよりよく利用し、自分の開発効率を向上させる.
  • 標準ライブラリのソースコードは必ず最もpythonicであり、pythonicの符号化スタイルを学ぶ.

  • このシリーズの文章はすべてpython 3に基づいている.5、インタラクティブ環境はすべてIpython 5.1.0に基づく
    文章は標準ライブラリの常用機能紹介、ソース分析(重要なものを選ぶ)、応用シーン紹介(工事実践が少ない、許して^^)を組織方式とする.
    osモジュール
    osモジュールはpythonがオペレーティングシステムと対話する主なモジュールであり、osモジュールはオペレーティングシステム間の差異によるプログラミング面の違いを補うことができる.仕事で使う主なシーンは、ファイルパスの説明、windowsとlinuxの間のファイルパスの違いです.
    OS関連
    os.sepオペレーティングシステム固有ファイルパスセパレータ
    In [2]: os.sep
    Out[2]: '/'
    

    os.name移植可能なオペレーティングシステムインタフェース識別は、オペレーティングシステムAPIの一連の相互関連標準の総称であり、windowsはnt Linux/Unixはposixである.
    In [3]:  os.name
    Out[3]: 'posix'
    

    os.defpath実行可能ファイルのデフォルト検索パス
    In [9]: os.defpath
    Out[9]: ':/bin:/usr/bin'
    

    os.curdir現在のパスの略称
    In [10]: os.curdir
    Out[10]: '.'
    

    os.pardir親パスの略称
    In [11]: os.pardir
    Out[11]: '..'
    

    os.uname()現在のオペレーティングシステムの詳細を取得する
    In [12]: os.uname()
    Out[12]: posix.uname_result(sysname='Linux', nodename='chao', release='4.10.0-42-generic', version='#46-Ubuntu SMP Mon Dec 4 14:38:01 UTC 2017', machine='x86_64')
    

    環境変数に関連する
    os.Environ現在の環境変数の取得
    In [13]: os.environ
    Out[13]: environ({'LC_PAPER': 'zh_CN.UTF-8', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',...})
    

    環境の特定の値を取得
    In [14]: os.environ.get('LC_PAPER')
    Out[14]: 'zh_CN.UTF-8'
    In [16]: os.getenv('LC_PAPER')
    Out[16]: 'zh_CN.UTF-8'
    

    環境変数の設定
    In [17]: os.environ['hello']='world'
    In [19]: os.getenv('hello')
    Out[19]: 'world'
    

    フォルダ関連
    os.getcwd()現在のワークパスの取得
    In [157]: os.getcwd()
    Out[157]: '/home/zhangwenchao/os_test'
    

    os.mkdirフォルダの作成
    In [119]: os.mkdir('./what')
    
    In [120]: ls
    f1  f2  hello/  what/
    
    

    os.rmdirフォルダの削除
    In [131]: ls
    f1  f2  hello/  what/
    
    In [132]: os.rmdir('hello')
    
    In [133]: ls
    f1  f2  what/
    

    os.Listdirは、現在のディレクトリまたは指定されたディレクトリの下にあるファイルをリスト形式で表示します.
    In [130]: os.listdir()
    Out[130]: ['hello', 'f1', 'f2', 'what']
    
    In [131]: ls
    f1  f2  hello/  what/
    

    os.renameファイル名の変更
    In [148]: ls
    f1  f2  hello/  what/
    
    In [149]: os.rename('./hello','world')
    
    In [150]: ls
    f1  f2  what/  world/
    

    os.removeファイルの削除
    In [150]: ls
    f1  f2  what/  world/
    
    In [151]: os.remove('f1')
    
    In [152]: ls
    f2  what/  world/
    
    

    ファイルの削除はこうですが、新しいファイルはopen関数で実現されます.python新しいファイルはopen関数で実現されます.
    In [153]: f3 = open('./f3','w')
    
    In [154]: ls
    f2  f3  what/  world/
    
    In [155]: f3.close()
    
    In [156]: ls
    f2  f3  what/  world/
    

    os.パスに関連するパス
    パスの絶対パスを取得
    In [27]: os.path.abspath(path='.')
    Out[27]: '/home/zhangwenchao/os_test'
    

    パスの基本名の取得
    In [31]: os.path.basename('/home/zhangwenchao')
    Out[31]: 'zhangwenchao'
    

    パスリストの共通パスの最も長い部分を取得
    In [37]: os.path.commonpath(['/home/zhangwenchao','/home/zhangwenchao/chaozi','/home/zhangwenchao/hello'])
    Out[37]: '/home/zhangwenchao'
    

    パスの開始ディレクトリを取得
    In [38]: os.path.dirname('/home/zhangwenchao')
    Out[38]: '/home'
    

    パスがシステムに存在するかどうかを確認します
    In [40]: os.path.exists('/home/zhangwenchao')
    Out[40]: True
    
    In [41]: os.path.exists('/home/zhangwenchao/haha')
    Out[41]: False
    

    翻訳者ディレクトリの絶対パス
    In [49]: os.path.expanduser(path='~')
    Out[49]: '/home/zhangwenchao'
    

    パスの'~'をホームディレクトリの絶対パスに変更
    In [55]: os.path.expanduser('~/os_test')
    Out[55]: '/home/zhangwenchao/os_test'
    

    最後にディレクトリに入った時刻を表示
    In [58]: os.path.getatime('.')
    Out[58]: 1522289333.369126
    

    最後にディレクトリを変更した時刻を表示
    In [60]: os.path.getmtime('.')
    Out[60]: 1522289329.4610949
    

    パスのサイズを表示
    In [61]: os.path.getsize('/home/zhangwenchao/os_test')
    Out[61]: 4096
    

    パスがファイルかフォルダかを表示
    In [62]: os.path.isdir('/home/zhangwenchao/os_test')
    Out[62]: True
    
    In [63]: os.path.isfile('/home/zhangwenchao/os_test')
    Out[63]: False
    

    パスはつなぎ合わせて、異なるオペレーティングシステムによって異なるファイルのつなぎ合わせを採用して、例えば私は今linuxシステムを使って'/'つなぎ合わせを採用します
    In [64]: os.path.join('/home','hello','world')
    Out[64]: '/home/hello/world'
    
    

    仕様システムのファイルパス形式
    In [70]: os.path.normpath('c:\home\ha')
    Out[70]: 'c:\\home\\ha'
    In [72]: os.path.normpath('/home//ha')
    Out[72]: '/home/ha'
    

    あるパスから相対パスを計算します.たとえば、現在/home/zhangwenchao/os_test
    In [79]: os.path.relpath('/home')
    Out[79]: '../..'
    
    In [80]: os.path.relpath('/home/work')
    Out[80]: '../../work'
    
    In [81]: os.path.relpath('/home/work','/home')
    Out[81]: 'work'
    
    In [82]: os.path.relpath('/home/work','/')
    Out[82]: 'home/work'
    

    os.path.split(path)はパスをdirnameとbasenameに分割し,メタグループを返す
    In [84]: os.path.split('/home/work/hello')
    Out[84]: ('/home/work', 'hello')
    

    ファイルの拡張子を分割し、ファイルの拡張子を取得できます.
    In [85]: os.path.splitext('/home/work/hello.txt')
    Out[85]: ('/home/work/hello', '.txt')
    
    In [87]: os.path.splitext('/home/work/hello-txt')
    Out[87]: ('/home/work/hello-txt', '')
    

    os.path.samefile(path 1,path 2)ディレクトリまたはファイルが同じか否かを判断する
    In [88]: %mkdir hello
    
    In [89]: ls
    hello/
    
    In [90]: os.path.samefile('./hello','.')
    Out[90]: False
    
    In [91]: os.path.samefile('./hello','./hello')
    Out[91]: True