ホームページ >バックエンド開発 >Python チュートリアル >Pythonファイル操作API
Pythonでのファイルやフォルダーの操作(ファイル操作関数)には、osモジュールとshutilモジュールが必要です。
現在の作業ディレクトリ、つまり現在のPythonスクリプトが動作するディレクトリパスを取得します: os.getcwd()
指定されたディレクトリ内のすべてのファイルとディレクトリ名を返します: os.listdir()
関数が使用されますファイルを削除する: os.remove()
複数のディレクトリを削除する: os.removedirs(r "c:python")
指定されたパスがファイルであるかどうかを確認する: os.path.isfile()
指定されたパスがファイルであるかどうかを確認するディレクトリ: os .path.isdir()
それが絶対パスであるかどうかを判断します: os.path.isabs()
指定されたパスが実際に存在するかどうかを確認します: os.path.exists()
ディレクトリ名とファイル名を返しますパスの: os.path.split() 例: os.path.split('/home/swaroop/byte/code/poem.txt') 結果: ('/home/swaroop/byte/code', 'poem. txt')
分割拡張子名: os.path.splitext()
パス名を取得: os.path.dirname()
ファイル名を取得: os.path.basename()
シェルコマンドを実行: os.system()
環境変数を読み取って設定します:os.getenv() および os.putenv()
は、現在のプラットフォームで使用される行終端記号を与えます: os.linesep Windows は 'rn'、Linux は 'n'、Mac は 'r' を使用します
使用しているプラットフォーム:os.name Windows の場合は 'nt'、Linux/Unix ユーザーの場合は 'posix'
名前の変更: os.rename(old, new)
マルチレベルのディレクトリの作成: os.makedirs(r "c :pythontest")
単一のディレクトリを作成します: os.mkdir("test")
ファイル属性を取得します: os.stat(file)
ファイルのアクセス許可とタイムスタンプを変更します: os.chmod(file)
現在のプロセスを終了します: os.exit ()
ファイルサイズの取得: os.path.getsize(filename)
ファイル操作:
os.mknod("test.txt")オフ ファイルを開き、ファイルが存在しない場合は作成します
オープンモードについて:
w 書き込みモードで開きます、a 追加モードで開きます (EOF から開始し、必要に応じて新しいファイルを作成します)
r+ 読み書きモードで開きます
w+ 読み書きモードで開きますモード ( w を参照)
a+ 読み取り/書き込みモードでオープン ( a を参照)
rb バイナリ読み取りモードでオープン
wb バイナリ書き込みモードでオープン ( w を参照)
ab バイナリ追加モードでオープン ( a a を参照)
rb+ オープンバイナリ読み書きモードで開きます ( r+ を参照)
wb+ バイナリ読み書きモードで開きます ( w+ を参照)
ab+ バイナリ読み書きモードで開きます ( a+ を参照)
(Fp.read ([size]) #Size は読み取りの長さ、単位はバイト
fp.readline ([size]) #1 行を読み取ります。サイズが定義されている場合は、
の行の一部のみを読み取りますfp.readlines([size]) # ファイルの各行をリストのメンバーとして扱い、このリストを返します。実際、これはループ内で readline() を呼び出すことによって内部的に実装されます。 size パラメータが指定されている場合、size は読み取られるコンテンツの全長を表します。これは、ファイルの一部のみが読み取られることを意味します。
fp.write(str) #str をファイルに書き込みます。write() は str の性的な書き込みの後に改行文字を追加しません)。この関数も、各行の後に何も追加せずに、忠実に記述するだけです。
fp.close() Python は、使用されなくなったファイルを自動的に閉じますが、この機能は保証されていません。自分でファイルを閉じる習慣を身に付けることをお勧めします。ファイルが閉じた後に操作されると、valulerorが発生します。ファイルが for...in file などのステートメントで使用される場合、トラバーサルを実装するために next() 関数が呼び出されます。
fp.seek(offset[,whence]) #ファイル操作マークをオフセット位置に移動します。このオフセットは通常、ファイルの先頭を基準にして計算され、通常は正の数になります。ただし、whence パラメーターが指定されている場合は、この限りではありません。whence を 0 にすると最初から計算を開始し、1 を指定すると現在の位置を原点として使用できます。 2はファイルの末尾を起点として計算することを示します。ファイルを a または a+ モードで開いた場合、書き込み操作が実行されるたびに、ファイル操作マークは自動的にファイルの最後に戻ることに注意してください。 NFp.truncate ([SIZE]) #
現在のファイル操作マークの位置までファイルのサイズを切り詰めます。サイズがファイル サイズより大きい場合、システムによっては、ファイルが変更されないか、対応するサイズまでファイルが 0 でパディングされるか、ランダムなコンテンツが追加されることがあります。
目录操作:
os.mkdir("file") 创建目录
复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令
移动文件(目录)
shutil.move("oldpos","newpos")
删除文件
os.remove("file")
删除目录
os.rmdir("dir")只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删
转换目录
os.chdir("path") 换路径
相关例子
1 将文件夹下所有图片名称加上'_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 张图片
Python常见文件操作示例
os.path 模块中的路径名访问函数
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回 (dirname(), basename()) 元组
splitdrive() 返回 (drivename, pathname) 元组
splitext() 返回 (filename, extension) 元组
信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)
クエリ
exists() 指定したパス(ファイルまたはディレクトリ)が存在するかどうかを指定
isabs() パスが絶対パスかどうかを指定
isdir() パスが存在し、ディレクトリであるかどうかを指定
isfile()パスが存在し、ファイルであるかどうかを指定します
islink() は、パスが存在し、シンボリックリンクであるかどうかを指定します
ismount() は、パスが存在し、マウントポイントであるかどうかを指定します
Samefile() 2 つのパス名が同じものを指しているかどうかを指定しますfile
os.path.isdir(name): name がディレクトリであるかどうかを判断します。 name がディレクトリでない場合は、false を返します。存在する場合、false を返します。 os.path.exists(name): ファイルが存在するかどうかを判断します。 または、ディレクトリ名
os.path.getsize(name): ファイルのサイズを取得します。name がディレクトリの場合は、0L
os を返します。 path.abspath(name): 絶対パスを取得します
os.path.normpath(path): パス文字列を正規化します 形式
os.path.split(name): ファイル名とディレクトリを分割します (実際、ディレクトリ全体を分割する場合、最後のディレクトリもファイル名として分割され、ファイルまたはディレクトリが存在するかどうかは判断されません)
os.path.splitext(): ファイル名と拡張子を分割します
os.path.join(path ,name): ファイル名またはディレクトリでディレクトリを結合します
os.path.basename(path): ファイル名を返します
path.dirname(path): ファイルのパスを返します
ファイルパスを区切る文字列。
curdir 現在の作業ディレクトリの文字列名
pardir (現在の作業ディレクトリの親ディレクトリの文字列名
1. 名前変更: os.rename(old, new) 2削除: os.remove(file)
3ディレクトリ内のファイルを一覧表示します: os.listdir(path)
4. 現在の作業ディレクトリを取得します: os.getcwd()
5. 作業ディレクトリを変更します: os.chdir(newdir)
6 .複数レベルのディレクトリを作成します: os.makedirs(r"c:pythontest")
7. 単一のディレクトリを作成します: os.mkdir("test")
8. 複数のディレクトリを削除します: os.removedirs(r"c:python" ) #空のものをすべて削除します指定されたパスの最後のディレクトリの下にあるディレクトリ。
9. 単一のディレクトリを削除します: os.rmdir("test")
10. ファイル属性を取得します: os.stat(file)
11. ファイルのアクセス許可とタイムスタンプを変更します: os.chmod(file)
12. オペレーティング・システムを実行しますsystem コマンド: os.system("dir")
13. 新しいプロセスを開始します: os.exec()、os.execvp()
14. バックグラウンドでプログラムを実行します: osspawnv()
15. 現在のプロセスを終了します: os.exit( ), os._exit()
16. 分割ファイル名: os.path.split(r"c:pythonhello.py") --> ("c:\python", "hello.py") ")
17. 分割拡張子: os.path.splitext(r"c:pythonhello.py") --> ("c:\python\hello", ".py")
18. パス名を取得します。 os.path.dirname (r"c:pythonhello.py") --> "c:\python"
19. ファイル名を取得します: os.path.basename(r"r:pythonhello.py") -- > "hello.py "
20. ファイルが存在するかどうかを確認します: os.path.exists(r"c:pythonhello.py") --> True
21. ファイルが絶対パスであるかどうかを確認します: os.path .isabs(r".python") --> False
22. ディレクトリであるかどうかを判断します: os.path.isdir(r"c:python") --> True
23.ファイル: os.path.isfile(r"c:pythonhello .py") --> True
24. リンク ファイルかどうかを判断します: os.path.islink(r"c:pythonhello.py") -- > False
25. ファイルサイズを取得します: os.path.getsize (filename)
26.*******: os.ismount("c:\") --> True
27. すべて検索ディレクトリ内のファイル: os.path.walk()
shutil モジュール ファイルに対する操作:
1. 単一ファイルをコピー: shultil.copy(oldfile, newfle)
2. ディレクトリ ツリー全体をコピー: shultil.copytree( r".setup", r".backup")
3. ディレクトリツリー全体を削除します: shultil.rmtree(r".backup")
临时文件的操作:
1.创建一个唯一的临时文件:tempfile.mktemp() --> filename
2.打开临时文件:tempfile.TemporaryFile()
内存文件(StringIO和cStringIO)操作
[4.StringIO] #cStringIO是StringIO模块的快速实现模块
1.创建内存文件并写入初始数据:f = StringIO.StringIO("Hello world!")
2.读入内存文件数据:print f.read() #或print f.getvalue() --> Hello world!
3.想内存文件写入数据:f.write("Good day!")
4.关闭内存文件:f.close()
import os import os.path import unittest import time #import pygame class PyFileCommonOperatorTest(unittest.TestCase): def __init__(self): """constructor""" def test01(self): print os.linesep print os.sep print os.pathsep print os.curdir print os.pardir print os.getcwd() print 'unittest here' if __name__ == "__main__": t = PyFileCommonOperatorTest() t.test01()
读文件的写法
#读文件的写法: #读文本文件: input = open('data', 'r')#第二个参数是默认的,可以不加 #读二进制文件: input = open('data', 'rb') #读取所有文件内容: open('xxoo.txt').read() #读取固定字节 open('abinfile', 'rb').read(100) #读每行 file_object.readlines()
更多python 文件操作api相关文章请关注PHP中文网!