Python学習のファイル


一、pythonでファイル、フォルダを操作する際によく使われるosモジュールとshutilモジュールの一般的な方法.1.現在の作業ディレクトリ、すなわち現在のPythonスクリプトが作業するディレクトリパスを得る:os.getcwd()2.指定したディレクトリの下にあるすべてのファイルとディレクトリ名を返します:os.listdir()3.関数を使用してファイルを削除します:os.remove()4.複数のディレクトリを削除:os.removedirs(r"c:python")5.与えられたパスがファイルであるかどうかを確認します:os.path.isfile()6.与えられたパスがディレクトリであるかどうかを確認します:os.path.isdir()7.絶対パスか否かを判断する:os.path.isabs()8.与えられた経路が本当に存在するかどうかを検査する:os.path.exists()9.パスのディレクトリ名とファイル名を返します:os.path.split()     eg os.path.split('/home/swaroop/byte/code/poem.txt')結果:('/home/swaroop/byte/code','poem.txt')10.分離拡張子:os.path.splitext()11.パス名を取得:os.path.dirname()12.ファイル名を取得:os.path.basename()13.shellコマンドの実行:os.system()14.環境変数の読み込みと設定:os.getenv()とos.putenv()15.現在のプラットフォームで使用する行終端子:os.linesep Windowsでは'r',Linuxでは',Macでは'r'16を使用する.使用しているプラットフォームを示します:os.nameはWindowsでは「nt」、Linux/Unixユーザーでは「posix」17です.名前変更:os.rename(old,new)18.マルチレベルディレクトリの作成:os.makedirs(r"c:pythontest")19.単一ディレクトリの作成:os.mkdir("test")20.ファイル属性の取得:os.stat(file)21.ファイル権限とタイムスタンプの変更:os.chmod(file)22.現在のプロセスの終了:os.exit()23.ファイルサイズの取得:os.path.getsize(filename)二、ファイル操作方法大全:1.os.mknod("test.txt")#空のファイルを作成する2.fp=open("test.txt",w)#直接ファイルを開き、ファイルが存在しない場合はファイル3を作成する.Openモードについて:
コードは次のとおりです.
w:      ,
a:        (  EOF   ,         )
r+:       
w+:        (   w )
a+:        (   a )
rb:         
wb:          (   w )
ab:           (   a )
rb+:           (   r+ )
wb+:           (   w+ )
ab+:           (   a+ )

fp.read([size])#sizeは読み出しの長いでbyte単位fpである.readline([size])#1行を読み、sizeを定義すると、1行の一部fpを返す可能性がある.readlines([size])#ファイルの各行をリストのメンバーとして返します.実はその内部はreadline()をループ呼び出して実現されています.sizeパラメータが指定されている場合、sizeは、読み取り内容の総長を表し、すなわちファイルの一部に読み取り専用である可能性がある.fp.write(str)#strをファイルに書き込むが、write()はstrの後に改行文字fpを付ける.writelines(seq)#seqの内容をすべてファイルに書き込む(複数行一括書込み).この関数も忠実に書き込むだけで、各行の後ろに何も付けられません.fp.close()#ファイルを閉じます.pythonは1つのファイルが不要になった後に自動的にファイルを閉じますが、この機能は保証されていません.自分で閉じる習慣を身につけたほうがいいです.1つのファイルが閉じた後も操作するとValueErrorfpが発生する.flush()#バッファの内容をハードディスクfpに書き込む.fileno()#は、長整数の「ファイルラベル」fp.isatty()ファイルが端末デバイスファイル(unixシステム)fp.tell()であるかどうかを返します.#ファイル操作フラグの現在位置を返し、ファイルの先頭を原点fpとする.next()#は次の行に戻り、ファイル操作フラグを次の行に移動します.1つのfileをfor...in fileのような文に使用すると、next()関数を呼び出して遍歴を実現します.fp.seek(offset[,whence])#ファイルの操作フラグをoffsetの位置に移動します.このoffsetは一般的にファイルの先頭に対して計算され、一般的に正数である.ただし、whenceパラメータが指定されている場合は必ずしもそうではありません.whenceは0で計算を開始し、1は現在の位置を原点として計算することを示します.2はファイルの末尾を原点として計算することを示します.ファイルがaまたはa+のモードで開くと、書き込み操作のたびにファイル操作フラグが自動的にファイルの末尾に戻ります.fp.truncate([size])#ファイルを所定のサイズに裁断し、デフォルトは現在のファイル操作タグの位置に裁断します.sizeがファイルのサイズよりも大きい場合は、システムによってはファイルを変更しないか、0でファイルを対応するサイズに補うか、ランダムな内容で加算する可能性があります.三、目次操作方法大全1.ディレクトリosを作成します.mkdir("file")                   2.ファイルのコピー:shutil.copyfile("oldfile","newfile")#oldfileとnewfileはいずれもファイルshutilのみである.copy("oldfile","newfile")#oldfileはフォルダのみ、newfileはファイルでもターゲットディレクトリでも3.フォルダのコピー:4.shutil.copytreee(「olddir」,「newdir」)olddirおよびnewdirはいずれもディレクトリのみであり、newdirは存在しない必要がある.ファイル(ディレクトリ)os.rename(「oldname」,「newname」)の名前を変更するファイルまたはディレクトリは、このコマンド6を使用します.ファイル(ディレクトリ)shutil.move("oldpos","newpos")7を移動する.ファイルosを削除します.remove("file")8.ディレクトリosを削除します.rmdir("dir")#空のディレクトリshutilのみ削除できます.rmtree("dir")#空のディレクトリ、コンテンツのあるディレクトリはすべて削除することができます.変換ディレクトリos.chdir("path")#パス4、ファイル統合操作インスタンスフォルダ下のすべてのピクチャ名に'_を付けるfc'pythonコード:
コードは次のとおりです.
# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)     
#'   '.join(list)         
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #        
        lists = file_path[1].split('.') #           
        file_ext = lists[-1] #     (      )
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #     i     
        #  
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()         
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('      :%0.2f'%(c))
print('      %s    '%(i))

出力結果:
コードは次のとおりです.
プログラム実行時間:0.11合計109枚の画像を処理