Python 3ファイルの簡単操作!

4188 ワード

まず相対経路と絶対経路とは何かを紹介します.私たちのプログラム犬家族はきっとこれを知っていると思いますが、子供靴を忘れてしまうことは避けられません.だからコードが出てきて、みんなが早く思い出します.
相対パス
相対パスは、ファイルの現在の作業パスに対して
絶対パス
絶対パスは、Windowsシステムの場合、ファイル名とその完全なパス、およびドライブアルファベットで構成されます.ファイルの絶対パスは、c:pythonworkspacefirstpy.py Unixプラットフォームでは、ファイルの絶対パスは/home/sherlockblaze/Documents/pythonworkspace/firstpyである可能性があります.py
ファイルの種類
ファイルはテキストファイルとバイナリファイルに大きく分けることができます.異なるオペレーティングシステムでは、テキストエディタで編集できるファイルをテキストファイルと呼び、他のファイルはバイナリファイルに属します.バイナリファイルは、テキストファイルよりもバイナリファイルの処理効率が高いことが利点です.
ファイルの読み込みの開始
1つのファイルを読み取る考え方は永遠に同じで、最初のステップは自然に1つのファイルを開くことです.pythonではopen関数を使用して次のコードでファイルを開きます.
    input = open(filepath,mode)

私たちのmodeは主に以下のいくつかの方法から来ています.
モード|作用----|----r|読み出しモードw|書き込みモードa|追加モードrb|読み出しバイナリデータモードオープンファイルwb|書き込みバイナリデータモードオープンファイル
同じように、ファイルを開くには2つの方法があります.
  • 絶対経路
  • を通過する.
        input = open("/Users/sherlockblaze/Documents/pythonworkspace/Test.txt","r")
    
  • 相対パス(相対パスで現在の作業ディレクトリの下のファイルを開くことができることに注意してください.つまり、私の.pyファイルが/User/sherlock/Documentsの下に存在する場合、相対パスで開いたファイルも現在のパスの下に保存されます)
  •     input = open("Test.txt","r")
    

    に注意
    Windowsで絶対パスでファイルを開く場合は、絶対ファイル名にr接頭辞を付けて、この文字列が行文字列であることを表す必要があります.python解釈器は、ファイル内の反斜線を字面的な意味での反斜線と理解することができます.例:
       input = open(r"d:\pythonworkspace\Test.txt","r")
    

    rを接頭辞として追加しない場合は、上記の文をエスケープ文字で次のように変更する必要があります.
        input = open("d:\\pythonworkspace\\Test.txt","r")
    

    ファイルへのデータの書き込み
    まず、書き込みでファイルを開き、writeメソッドを呼び出してファイルにデータを書き込みます.
    def main():
        input = open("Test.txt","w")
        input.write("SherlockBlaze")
        input.write("\t is the most handsome guy!
    ") input.close() main()

    このようにして、現在のディレクトリの下のTestに向かいます.txtファイルにはSherlockBlazeis the most handsome guyが書き込まれています!この文は、ファイルを書き終わった後、close()メソッドを呼び出してファイルストリームを閉じたことに注意してください.
    一般的な機能
    wモードでファイルを開くと、ファイルが存在しない場合、open関数は新しいファイルを作成し、ファイルが存在する場合、このファイルの内容は心の内容で上書きされます.読み取り/書き込みモードでファイルを開くと、ファイル内部にファイルポインタという特殊なタグが追加され、ファイルの読み取り/書き込み操作はポインタの現在の位置で発生します.
    ファイルが存在するかどうかを判断する
    誤操作を避けるためにosを通過することができます.pathモジュールのisFile関数は、ファイルが存在するかどうかを判断します.次のようになります.
    import os.path
    is os.paht.isfile("Test.txt"):
        print("Test.txt exists")
    else:
        print("Test.txt doesn't exists")
    

    単純ウィジェット
    ファイルのパスを入力し、各文字の出現回数を計算します.
    def main():
        filename = input("Enter a filename: ").strip()
        infile = open(filename,"r")
    
        counts = 26 * [0]
        for line in infile:
            countLetters(line.lower(),counts)
    
        for i in range(len(counts)):
            if counts[i] != 0:
                print(chr(ord('a') + i) + "appears " + str(counts[i])
                + (" time" if counts[i] == 1 else " times"))
    
        infile.close()
    
    def countLetters(line,counts):
        for ch in line:
            if ch.isalpha():
                counts[ord(ch) - ord('a')] += 1
    
    main()
    

    まず配列を作成し,1文字を読み取るたびに対応する位置の数字を1つ加算し,最後に遍歴して出力する.
    サイトのソースコードをダウンロードして、目的のファイルに書きます.
    import sys
    import urllib
    import urllib.request
    import os.path
    
    def download(url,num_retries = 2):
        print ('Downloading:',url)
        try:
            html = urllib.request.urlopen(url).read()
        except urllib.URLError as e:
            print ('Download error:',e.reason)
            html = None
            if num_retries > 0:
                if hasattr(e,'code') and 500 <= e.code <600:
                    return download(url,num_retries-1)
        return html
    
    def main():
        url = input("Enter a url:
    ").strip() f2 = input("Enter a target file:
    ").strip() if os.path.isfile(f2): print(f2 + " already exists") sys.exit() html = download(url) target = open(f2,"w") content = html.decode(encoding="utf-8") target.write(content) target.close() main()

    例えば私はウェブサイトを入力しますhttp://www.game2.cn/、入力先ファイル:game 2.txt.ダウンロードして、対応するhtmlを現在の作業ディレクトリのgame 2に入力することができます.txtファイルにあります.