


Résumé des dix opérations sur les fichiers les plus couramment utilisées en Python
Tutoriel PythonPrésente les dix principales opérations sur les fichiers courantes, pleines d'informations utiles~~
Recommandé (gratuit) : Tutoriel Python (vidéo)
Il existe de nombreux besoins quotidiens en matière de traitement par lots de fichiers. L'écriture de scripts en Python peut être très pratique, mais dans ce processus, vous devrez inévitablement traiter des documents. Pour la première fois, il y aura beaucoup de documents avec lesquels vous n'aurez aucun moyen de commencer, vous ne pourrez donc vous rendre qu'à Du Niang.
Dans cet article, Dongge a trié les 10 opérations sur les fichiers les plus couramment utilisées en Python, qui sont utilisées à la fois dans le traitement par lots et dans la lecture de fichiers. Je pense que cette revue sera utile.
1. Afficher le répertoire actuel
Quand on veut savoir quel est le répertoire de travail actuel, on peut simplement utiliser la fonction os
du getcwd()
module , ou utilisez pathlib
de cwd()
comme indiqué ci-dessous.
>>> # 第一种方法:显示当前目录 ... import os ... print("当前工作目录:", os.getcwd()) ... Current Work Directory: /Users/ycui1/PycharmProjects/Medium_Python_Tutorials >>> # 第二种方法:或者我们也可以使用 pathlib ... from pathlib import Path ... print("当前工作目录:", Path.cwd()) ... Current Work Directory: /Users/ycui1/PycharmProjects/Medium_Python_Tutorials
Si vous utilisez une ancienne version de Python (2. Créer un nouveau répertoire
Pour créer un répertoire, vous pouvez utiliser la fonction
os
du modulemkdir()
. Cette fonction créera un répertoire sous le chemin spécifié, si seul le nom du répertoire est utilisé, un dossier sera créé dans le répertoire courant, c'est-à-dire le concept de chemins absolus et de chemins relatifs.>>> # 在当前文件夹创建新目录 ... os.mkdir("test_folder") ... print("目录是否存在:", os.path.exists("test_folder")) ... 目录是否存在: True >>> # 在特定文件夹创建新目录 ... os.mkdir('/Users/ycui1/PycharmProjects/tmp_folder') ... print("目录是否存在:", os.path.exists('/Users/ycui1/PycharmProjects/tmp_folder')) ... 目录是否存在: TrueCopier après la connexionCependant, si vous souhaitez créer un répertoire à plusieurs niveaux, comme un dossier sous un dossier), vous devez utiliser cette
makedirs()
fonction.>>> # 创建包含子目录的目录 ... os.makedirs('tmp_level0/tmp_level1') ... print("目录是否存在:", os.path.exists("tmp_level0/tmp_level1")) ... Is the directory there: TrueCopier après la connexionSi vous utilisez la dernière version de Python (≥3.4), vous pouvez envisager d'utiliser le module
pathlib
pour créer un nouveau répertoire. Non seulement il peut créer des sous-répertoires, mais il peut également gérer les répertoires manquants dans le chemin.# 使用 pathlib from pathlib import Path Path("test_folder").mkdir(parents=True, exist_ok=True)Copier après la connexionUn problème à noter est que si vous essayez d'exécuter plusieurs fois certains des codes ci-dessus, vous risquez de rencontrer le problème "Impossible de créer un nouveau répertoire qui existe déjà." Nous pouvons gérer cela en définissant le paramètre
exist_ok
surTrue
(la valeur False par défaut nous empêchera de créer le répertoire).>>> # 使用 pathlib ... from pathlib import Path ... Path("test_folder").mkdir(parents=True, exist_ok=False) ... Traceback (most recent call last): File "<input>", line 3, in <module> File "/Users/ycui1/.conda/envs/Medium/lib/python3.8/pathlib.py", line 1284, in mkdir self._accessor.mkdir(self, mode) FileExistsError: [Errno 17] File exists: 'test_folder'Copier après la connexion3. Supprimer les répertoires et les fichiers
Une fois que nous avons fini de travailler sur certains fichiers ou dossiers, nous souhaiterons peut-être les supprimer. Pour ce faire, nous pouvons utiliser la fonction
os
du moduleremove()
pour supprimer des fichiers. Si nous voulons supprimer un dossier, nous devrions utiliserrmdir()
à la place.>>> # 删除一个文件 ... print(f"* 删除文件前 {os.path.isfile('tmp.txt')}") ... os.remove('tmp.txt') ... print(f"* 删除文件后 {os.path.exists('tmp.txt')}") ... * 删除文件前 True * 删除文件后 False >>> # 删除一个文件夹 ... print(f"* 删除文件夹前 {os.path.isdir('tmp_folder')}") ... os.rmdir('tmp_folder') ... print(f"* 删除文件夹后 {os.path.exists('tmp_folder')}") ... * 删除文件夹前 True * 删除文件夹后 FalseCopier après la connexionSi vous utilisez le module
pathlib
, vous pouvez utiliser la méthodeunlink()
, et pour supprimer un répertoire, vous pouvez utiliser la méthodermdir()
. Notez que les deux méthodes sont des méthodes d’instance de l’objet Path.4. Obtenir la liste des fichiers
Lorsque nous analysons un certain travail ou un projet d'apprentissage automatique pour le traitement des données, nous devons obtenir la liste des fichiers dans un répertoire spécifique.
Habituellement, les noms de fichiers ont des modèles correspondants. Supposons que nous voulions trouver tous les fichiers .txt dans le répertoire, nous pouvons utiliser la méthode
glob()
de l'objet Path pour y parvenir. La méthodeglob()
crée un générateur qui nous permet d'itérer.>>> txt_files = list(Path('.').glob("*.txt")) ... print("Txt files:", txt_files) ... Txt files: [PosixPath('hello_world.txt'), PosixPath('hello.txt')]Copier après la connexionAlternativement, il est également pratique d'utiliser
glob模块
directement, comme indiqué ci-dessous, qui a des fonctionnalités similaires en créant une liste de noms de fichiers pouvant être utilisés. Dans la plupart des cas, comme pour la lecture et l'écriture de fichiers, les deux peuvent être utilisés.>>> from glob import glob ... files = list(glob('h*')) ... print("以h开头的文件:", files) ... Files starting with h: ['hello_world.txt', 'hello.txt']Copier après la connexion5. Déplacer et copier des fichiers
Déplacer des fichiers
L'une des tâches courantes de gestion de fichiers consiste à déplacer et à copier fichiers . En Python, ces tâches peuvent être effectuées très facilement. Pour déplacer un fichier, renommez simplement le fichier en remplaçant son ancien répertoire par le répertoire cible. Supposons que nous devions déplacer tous les fichiers .txt vers un autre dossier, utilisez
Path
pour y parvenir ci-dessous.>>> target_folder = Path("目标文件") ... target_folder.mkdir(parents=True,exist_ok=True) ... source_folder = Path('.') ... ... txt_files = source_folder.glob('*.txt') ... for txt_file in txt_files: ... filename = txt_file.name ... target_path = target_folder.joinpath(filename) ... print(f"** 移动文件 {filename}") ... print("目标文件存在:", target_path.exists()) ... txt_file.rename(target_path) ... print("目标文件存在:", target_path.exists(), '\n') ... ** 移动文件 hello_world.txt 目标文件存在: False 目标文件存在: True ** 移动文件 hello.txt 目标文件存在: False 目标文件存在: TrueCopier après la connexionCopie de fichiers
Nous pouvons utiliser les fonctions disponibles dans le module
_shutil_
, le module _shutil_ est un autre module utile dans la bibliothèque standard pour les opérations sur les fichiers. Nous pouvonscopy()
utiliser cette fonction dans un module en spécifiant les fichiers source et destination sous forme de chaînes. Un exemple simple est présenté ci-dessous. Bien sûr, vous pouvez combiner la fonctioncopy()
avec la fonctionglob()
pour traiter un tas de fichiers avec le même modèle.>>> import shutil ... ... source_file = "target_folder/hello.txt" ... target_file = "hello2.txt" ... target_file_path = Path(target_file) ... print("* 复制前,文件存在:", target_file_path.exists()) ... shutil.copy(source_file, target_file) ... print("* 复制后,文件存在:", target_file_path.exists()) ... * 复制前,文件存在: False * 复制后,文件存在: TrueCopier après la connexion6. Vérifier le répertoire/fichier
La méthode
exists()
a été utilisée dans l'exemple ci-dessus pour vérifier si un chemin spécifique existe. S'il existe, il renvoie True ; s'il n'existe pas, il renvoie False. Cette fonction est disponible dans les modulesos
etpathlib
, et leur utilisation respective est la suivante.# os 模块中 exists() 用法 os.path.exists('path_to_check') # pathlib 模块中 exists() 用法 Path('directory_path').exists()Copier après la connexionEn utilisant
pathlib
nous pouvons également vérifier si le chemin est un répertoire ou un fichier.# 检查路径是否是目录 os.path.isdir('需要检查的路径') Path('需要检查的路径').is_dir() # 检查路径是否是文件 os.path.isfile('需要检查的路径') Path('需要检查的路径').is_file()Copier après la connexion7. Obtenir des informations sur le fichier
Nom du fichier
Lors du traitement des fichiers, dans de nombreux cas, il est nécessaire d'extraire le nom du fichier. Utiliser Path est très simple, vous pouvez afficher l'attribut name
path.name
sur l'objet Path. Si vous ne souhaitez pas ajouter de suffixe, vous pouvez vérifier l'attribut stempath.stem
.for py_file in Path().glob('c*.py'): ... print('Name with extension:', py_file.name) ... print('Name only:', py_file.stem) ... 带文件后缀: closures.py 只有文件名: closures 带文件后缀: counter.py 只有文件名: counter 带文件后缀: context_management.py 只有文件名: context_managementCopier après la connexionSuffixe du fichier
如果想单独提取文件的后缀,可查看Path对象的
suffix
属性。>>> file_path = Path('closures.py') ... print("文件后缀:", file_path.suffix) ... File Extension: .pyCopier après la connexion文件更多信息
如果要获取有关文件的更多信息,例如文件大小和修改时间,则可以使用该
stat()
方法,该方法和os.stat()
一样。>>> # 路径 path 对象 ... current_file_path = Path('iterable_usages.py') ... file_stat = current_file_path.stat() ... >>> # 获取文件大小: ... print("文件大小(Bytes):", file_stat.st_size) 文件大小(Bytes): 3531 >>> # 获取最近访问时间 ... print("最近访问时间:", file_stat.st_atime) 最近访问时间: 1595435202.310935 >>> # 获取最近修改时间 ... print("最近修改时间:", file_stat.st_mtime) 最近修改时间: 1594127561.3204417Copier après la connexion8. 读取文件
最重要的文件操作之一就是从文件中读取数据。读取文件,最常规的方法是使用内置
open()
函数创建文件对象。默认情况下,该函数将以读取模式打开文件,并将文件中的数据视为文本。>>> # 读取所有的文本 ... with open("hello2.txt", 'r') as file: ... print(file.read()) ... Hello World! Hello Python! >>> # 逐行的读取 ... with open("hello2.txt", 'r') as file: ... for i, line in enumerate(file, 1): ... print(f"* 读取行 #{i}: {line}") ... * 读取行 #1: Hello World! * 读取行 #2: Hello Python!Copier après la connexion如果文件中没有太多数据,则可以使用该
read()
方法一次读取所有内容。但如果文件很大,则应考虑使用生成器,生成器可以逐行处理数据。默认将文件内容视为文本。如果要使用二进制文件,则应明确指定用
r
还是rb
。另一个棘手的问题是文件的编码。在正常情况下,
open()
处理编码使用utf-8
编码,如果要使用其他编码处理文件,应设置encoding
参数。9. 写入文件
仍然使用
open()
函数,将模式改为w
或a
打开文件来创建文件对象。w
模式下会覆盖旧数据写入新数据,a
模式下可在原有数据基础上增加新数据。>>> # 向文件中写入新数据 ... with open("hello3.txt", 'w') as file: ... text_to_write = "Hello Files From Writing" ... file.write(text_to_write) ... >>> # 增加一些数据 ... with open("hello3.txt", 'a') as file: ... text_to_write = "\nHello Files From Appending" ... file.write(text_to_write) ... >>> # 检查文件数据是否正确 ... with open("hello3.txt") as file: ... print(file.read()) ... Hello Files From Writing Hello Files From AppendingCopier après la connexion上面每次打开文件时都使用
with
语句。
with
语句为我们创建了一个处理文件的上下文,当我们完成文件操作后,它可以关闭文件对象。这点很重要,如果我们不及时关闭打开的文件对象,它很有可能会被损坏。10. 压缩和解压缩文件
压缩文件
zipfile
模块提供了文件压缩的功能。使用ZipFile()
函数创建一个zip
文件对象,类似于我们对open()函数所做的操作,两者都涉及创建由上下文管理器管理的文件对象。>>> from zipfile import ZipFile ... ... # 创建压缩文件 ... with ZipFile('text_files.zip', 'w') as file: ... for txt_file in Path().glob('*.txt'): ... print(f"*添加文件: {txt_file.name} 到压缩文件") ... file.write(txt_file) ... *添加文件: hello3.txt 到压缩文件 *添加文件: hello2.txt 到压缩文件Copier après la connexion解压缩文件
>>> # 解压缩文件 ... with ZipFile('text_files.zip') as zip_file: ... zip_file.printdir() ... zip_file.extractall() ... File Name Modified Size hello3.txt 2020-07-30 20:29:50 51 hello2.txt 2020-07-30 18:29:52 26Copier après la connexion结论
以上就是整理的Python常用文件操作,全部使用内置函数实现。当然,也可以借助比如
pandas
等库来完成一些操作。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.
