Le fonctionnement des fichiers et des dossiers (fonctions d'opération de fichiers) en python nécessite le module os et le module Shutil.
Obtenir le répertoire de travail actuel, c'est-à-dire le chemin du répertoire dans lequel le script Python actuel fonctionne : os.getcwd()
Renvoyer tous les fichiers et noms de répertoire dans le répertoire spécifié : os.listdir()
Fonction utilisée pour supprimer un fichier : os.remove()
Supprimer plusieurs répertoires : os.removedirs(r"c:python")
Vérifier si le chemin donné est un fichier : os.path .isfile()
Vérifiez si le chemin donné est un répertoire : os.path.isdir()
Vérifiez s'il s'agit d'un chemin absolu : os.path.isabs()
Vérifiez si le chemin donné est vrai Stockage local : os.path.exists()
Renvoie le nom du répertoire et le nom de fichier d'un chemin : os.path.split() par exemple os.path.split('/home/swaroop/byte /code/poem.txt' ) Résultat : ('/home/swaroop/byte/code', 'poem.txt')
Extension divisée : os.path.splitext()
Obtenir le nom du chemin : os.path .dirname()
Obtenir le nom du fichier : os.path.basename()
Exécuter la commande shell : os.system()
Lire et définir les variables d'environnement : os.getenv() et os.putenv()
give Indiquez le terminateur de ligne utilisé par la plateforme actuelle : os.linesep Windows utilise 'rn', Linux utilise 'n' et Mac utilise 'r'
pour indiquer la plateforme que vous utilisez : os.name Pour Windows , c'est 'nt' , tandis que pour les utilisateurs Linux/Unix c'est 'posix'
Renommer : os.rename(old, new)
Créer un répertoire multi-niveaux : os.makedirs(r "c:pythontest" )
Créer un répertoire unique : os.mkdir ("test")
Obtenir les attributs du fichier : os.stat (fichier)
Modifier les autorisations et les horodatages du fichier : os.chmod (fichier)
Mettre fin au courant processus : os.exit ()
Obtenir la taille du fichier : os.path.getsize(filename)
Opération sur le fichier :
os.mknod("test.txt" ) Créez un fichier vide
fp = open("test.txt",w) Ouvrez directement un fichier Si le fichier n'existe pas, créez le fichier
A propos du mode ouvert :
w pour écrire Ouvrir en mode ajout,a Ouvrir en mode ajout (commencer par EOF, créer un nouveau fichier si nécessaire)
r Ouvrir en mode lecture-écriture
w Ouvrir dans mode lecture-écriture (voir w)
a Ouvert en mode lecture-écriture Ouvert en mode écriture (voir a)
rb Ouvert en mode lecture binaire
wb Ouvert en mode écriture binaire (voir w)
ab Ouvrir en mode ajout binaire (voir a)
rb Lire et écrire en mode binaire ouvert (voir r )
wb Ouvrir en mode lecture-écriture binaire (voir w )
ab Ouvrir en mode lecture-écriture binaire mode écriture (voir a )
fp.read ([size]) #La taille est la longueur de la lecture, et l'unité
fp.reamline ([size]) #lire une partie de
fp.readlines([size. ]) # Traitez chaque ligne du fichier comme un membre d'une liste et renvoyez cette liste. En fait, il est implémenté en interne en appelant readline() dans une boucle. Si le paramètre size est fourni, size représente la longueur totale du contenu lu, ce qui signifie que seule une partie du fichier peut être lue. < (Plusieurs lignes écrites en même temps). Cette fonction écrit également fidèlement, sans rien ajouter après chaque ligne.
fp.close() Python fermera automatiquement un fichier une fois qu'il n'est plus utilisé. Cependant, cette fonction n'est pas garantie. Il est préférable de prendre l'habitude de le fermer vous-même. Si un fichier est opéré après sa fermeture, une ValueError se produira
fp.flush() #Return a long entier "file label"
fp.isatty() à La position actuelle, avec le début de le fichier comme origine
fp. next() #Retournez à la ligne suivante et déplacez la marque d'opération de fichier sur la ligne suivante. Lorsqu'un fichier est utilisé dans une instruction telle que for...in file, la fonction next() est appelée pour implémenter le parcours.
fp.seek(offset[,whence]) Déplacez la marque d'opération de fichier vers la position de décalage. Ce décalage est généralement calculé par rapport au début du fichier et est généralement un nombre positif. Mais ce n'est pas nécessairement le cas si le paramètre whence est fourni. whence peut être 0 pour recommencer le calcul depuis le début, et 1 pour utiliser la position actuelle comme origine. 2 indique que la fin du fichier est utilisée comme origine du calcul. Il convient de noter que si le fichier est ouvert en mode a ou a, la marque d'opération de fichier reviendra automatiquement à la fin du fichier à chaque fois qu'une opération d'écriture est effectuée.
FP.TRUNCATE ([SIZE]) #
目录操作:
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() 返回文件大小(以字节为单位)
Requête
exist() Si le chemin spécifié (fichier ou répertoire) existe
isabs() Spécifiez si le chemin est un chemin absolu
isdir() Spécifiez si le chemin existe et est un répertoire
isfile() précise si le chemin existe et est un fichier
islink() précise si le chemin existe et est un lien symbolique
ismount() précise si le chemin existe et est un point de montage
samefile () deux noms de chemin S'il pointe vers le même fichier
os.path.isdir(name) : Détermine si name est un répertoire Si name n'est pas un répertoire, il renvoie false
os.path. .isfile(name) : Détermine si le nom est un répertoire. Si le nom n'existe pas, il renverra false
os.path.exists(name) : Détermine si le nom du fichier ou du répertoire
existe dans le système d'exploitation. path.getsize(name) : récupère la taille du fichier, si le nom est un répertoire, renvoie 0L
os.path.abspath(name) : récupère le chemin absolu
os.path.normpath(path) : normalise le forme de chaîne de chemin
os.path.split(name) : divisez le nom du fichier et le répertoire (en fait, si vous utilisez entièrement des répertoires, cela séparera également le dernier répertoire en tant que nom de fichier, et il ne déterminera pas si le fichier ou le répertoire existe)
os.path.splitext() : noms et extensions de fichiers séparés
os.path.join(path,name) : rejoindre le répertoire avec le nom de fichier ou le répertoire
os.path.basename( path): Renvoie le nom du fichier
os.path.dirname(path): Renvoie le chemin du fichier
🎜> pathsep Une chaîne utilisée pour séparer les chemins de fichiers
curdir Le nom de chaîne du répertoire de travail actuel
. pardir (le nom de chaîne du répertoire parent du répertoire de travail actuel
1. Renommer : os rename(old, new)
2. Supprimer : os.remove(file)
3. Listez les fichiers dans le répertoire : os.listdir(path)
4. Obtenez le répertoire de travail actuel : os.getcwd()
5. Changez le répertoire de travail : os.chdir(newdir)
6. Créez un répertoire multi-niveaux : os.makedirs(r"c:pythontest")
7. Créez un seul répertoire : os.mkdir("test")
8. Supprimez plusieurs répertoires : os.removedirs(r "c:python") #Supprime tous les répertoires vides sous le dernier répertoire du chemin donné.
9. Supprimez un seul répertoire : os.rmdir("test")
10. Obtenez les attributs du fichier : os.stat(file)
11. Modifiez les autorisations et les horodatages du fichier : os.chmod(file)
12. Exécutez les commandes du système d'exploitation : os.system("dir")
13. Démarrez un nouveau processus : os.exec(), os.execvp()
14. Exécutez le programme en arrière-plan : osspawnv()
15. Terminez le processus en cours : os.exit(), os._exit()
16. Nom du fichier divisé : os.path.split(r"c:pythonhello.py") - -> ( "c:\python", "hello.py")
17. Extension divisée : os.path.splitext(r"c:pythonhello.py") --> \hello" , ".py")
18. Obtenez le nom du chemin : os.path.dirname(r"c:pythonhello.py") --> "c:\python"
19. Obtenez le nom du fichier : os .path.basename(r"r:pythonhello.py") --> "hello.py"
20. Déterminez si le fichier existe : os.path.exists(r"c:pythonhello .py") -- > True
21. Déterminez s'il s'agit d'un chemin absolu : os.path.isabs(r".python") --> False
22. Déterminez s'il s'agit d'un répertoire : os.path.isdir(r"c :python") --> True
23. Déterminez s'il s'agit d'un fichier : os.path.isfile(r"c:pythonhello.py") --> True
24. Déterminez s'il s'agit d'un fichier lien : os.path.islink(r"c:pythonhello.py") --> False
25. Obtenez la taille du fichier : os.path.getsize( filename)
26. ********** : os.ismount("c:\") --> True
27. Recherchez tous les fichiers dans le répertoire : os.path.walk ()
Le module Shutil opère sur les fichiers :
1. Copiez un seul fichier : shultil.copy(oldfile, newfle)
2. Copiez l'intégralité de l'arborescence des répertoires : shultil.copytree (r".setup", 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中文网!