


Comment gérer les chemins de fichiers à l'aide du module pathlib de Python ?
1. 为什么需要pathlib
在pathlib出现之前, Python 的标准库os.path 支持操作文件路径, 使用字符串表示文件路径。
In [1]: import os.path In [2]: os.path.abspath('test') Out[2]: 'C:\\Users\\Public\\Documents\\test'
如以上代码, abspath函数的返回是一个字符串. 如果想要获取父目录, 需要使用字符串的split方法
In [3]: path = os.path.abspath('test') In [4]: path.rsplit('\\', maxsplit=1)[0] Out[4]: 'C:\\Users\\Public\\Documents' Out[5]: os.path.join(path, 'data.txt') Out[5]: 'C:\\Users\\Public\\Documents\\test\\data.txt'
但是路径并不只是一个字符串, 如果需要对文件进行操作, 需要结合使用多个标准库的功能, 如: 需要移动当前目录下的一些文件到备份目录, 需要使用 os, glob, 和 shutil 库.
import glob import os import shutil for file_name in glob.glob('*.txt'): new_path = os.path.join('backup', file_name) print(new_path) shutil.move(file_name, new_path)
有了pathlib, 使得上述的问题变得更加轻松, pathlib 创建的Path对象, 可以直接通过正斜杠运算符 '/' 连接字符串生成新的对象.
In [1]: import pathlib In [2]: path = pathlib.Path() In [3]: path Out[3]: WindowsPath('.') In [4]: path.absolute() / 'test' / 'data.txt' Out[4]: WindowsPath('C:/Users/Public/Documents/test/data.txt')
另外pathlib还提供了很多方便的功能, 下面来介绍一下pathlib的常用方法
2. pathlib的使用
2.1 创建路径
前面用到了 pathlib.Path() 获取当前路径的方法, 也可以显示的传入路径字符串进行路径创建.支持相对路径和绝对路径字符串的传递
In [5]: pathlib.Path('test') Out[5]: WindowsPath('test') In [6]: pathlib.Path('C:/Users/Public/Documents/test') Out[6]: WindowsPath('C:/Users/Public/Documents/test')
另外 Path类还提供了一些类方法来更方便的获取路径. 如 .cwd()(当前工作目录)和.home()(您用户的主目录)
In [7]: pathlib.Path.cwd() Out[7]: WindowsPath('C:/Users/Public/Documents') In [8]: pathlib.Path.home() Out[8]: WindowsPath('C:/Users/wyy')
2.2 读写文件
通常, Python中读写文件时使用内置的 open 函数, open函数支持 path对象为参数打开文件.
In [7]: data_file = pathlib.Path.cwd() / 'data.txt' In [8]: with open(data_file, 'w') as f: ...: f.write('testdata')
path对象 提供了 open() 方法, 可以作为等效替代
In [9]: with data_file.open(mode='r') as f: ...: print(f.read()) testdata
对于简单的文件读写, pathlib 库中还提供了几个方便的方法
.read_text():以文本模式打开path对象, 并返回字符串数据。
.read_bytes():以二进制模式打开path对象, 并返回字节数据。
.write_text(): 以文本模式打开path对象, 并写入字符串数据。
.write_bytes():以二进制模式打开path对象, 并写入字节数据。
In [10]: data_file.read_text() Out[10]: 'testdata' In [11]: data_file.write_text('aloha') Out[11]: 5 In [12]: data_file.read_text() Out[12]: 'aloha'
2.3 路径的属性
路径的不同部分可以方便地作为属性使用.
.
name 文件名.
parent 当前文件或目录的父目录.
stem 不带后缀的文件名.
suffix 文件扩展名.
anchor 目录的锚点, (路径前的目录部分)
In [13]: data_file Out[13]: WindowsPath('C:/Users/Public/Documents/data.txt') In [14]: data_file.name Out[14]: 'data.txt' In [15]: data_file.stem Out[15]: 'data' In [16]: data_file.suffix Out[16]: '.txt' In [17]: data_file.anchor Out[17]: 'C:\\' In [18]: data_file.parent Out[18]: WindowsPath('C:/Users/Public/Documents')
2.4 移动和删除文件
要移动文件, 可以使用 .replace() 方法, 需要注意的是, 如果目的地址的文件已经存在, .replace() 将会覆盖它. 使用pathlib 实现要移动当前目录下的txt文件到备份目录代码如下.
In [19]: cwd = pathlib.Path.cwd() In [20]: for p in cwd.glob('*.txt'): ...: p.replace(p.parent/'backup'/p.name)
如果需要重命名文件或者拓展名, 可以使用 .with_name() 和 .with_suffix()
In [21]: data_file Out[21]: WindowsPath('C:/Users/Public/Documents/data.txt') In [22]: data_file.with_name(data_file.stem+'01').with_suffix('.txt.bak') Out[22]: WindowsPath('C:/Users/Public/Documents/data01.txt.bak')
3. 操作系统的差异
windows系统使用的文件路径分割符是 '/' linux和mac系统使用的文件路径分割符是 '\' .
当我们示例化一个pathlib.Path对象时, 根据操作系统的不同, 返回的时是 一个 WindowsPath, 或一个 PosixPath 对象. 这个特性使得编写跨平台兼容的代码变得相当容易. 当然也可以显式的使用 pathlib.WindowsPath.cwd() 来创建 WindowsPath 对象.
此外, pathlib还提供了提供纯计算操作而没有 I/O 的 纯路径对象. 各个路径的关系如下:
在一些用例中纯路径很有用,例如:
如果你想要在 Unix 设备上操作 Windows 路径(或者相反)。你不应在 Unix 上实例化一个 WindowsPath,但是你可以实例化 PureWindowsPath。
你只想操作路径但不想实际访问操作系统。在这种情况下,实例化一个纯路径是有用的,因为它们没有任何访问操作系统的操作。
附:pathlib和os的区别
pathlib在不同操作系统之间切换非常简单
os操作导入模块不统一。 有时候需要导入 os,有时候又需要导入 os.path,而pathlib统一from pathlib import *即可。
os返回的类型通常是字符串,但是路径和字符串并不等价,所以用os的时候,操作路径时有时候需要引入其他类库来协助操作;Pathlib模块则是面向对象,处理起来更方便
比如在windows中:二者找到当前目录的操作是这样的
import os from pathlib import * Path.cwd(),os.getcwd() #(WindowsPath('C:/Users/16000'), 'C:\\Users\\16000')
在linux中,是这样的
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.

Une formation efficace des modèles Pytorch sur les systèmes CentOS nécessite des étapes, et cet article fournira des guides détaillés. 1. Préparation de l'environnement: Installation de Python et de dépendance: le système CentOS préinstalle généralement Python, mais la version peut être plus ancienne. Il est recommandé d'utiliser YUM ou DNF pour installer Python 3 et Mettez PIP: sudoyuMupDatePython3 (ou sudodnfupdatepython3), pip3install-upradepip. CUDA et CUDNN (accélération GPU): Si vous utilisez Nvidiagpu, vous devez installer Cudatool

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.

Activer l'accélération du GPU Pytorch sur le système CentOS nécessite l'installation de versions CUDA, CUDNN et GPU de Pytorch. Les étapes suivantes vous guideront tout au long du processus: CUDA et CUDNN Installation détermineront la compatibilité de la version CUDA: utilisez la commande NVIDIA-SMI pour afficher la version CUDA prise en charge par votre carte graphique NVIDIA. Par exemple, votre carte graphique MX450 peut prendre en charge CUDA11.1 ou plus. Téléchargez et installez Cudatoolkit: visitez le site officiel de Nvidiacudatoolkit et téléchargez et installez la version correspondante selon la version CUDA la plus élevée prise en charge par votre carte graphique. Installez la bibliothèque CUDNN:

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.

Lors de la sélection d'une version Pytorch sous CentOS, les facteurs clés suivants doivent être pris en compte: 1. CUDA Version Compatibilité GPU Prise en charge: si vous avez NVIDIA GPU et que vous souhaitez utiliser l'accélération GPU, vous devez choisir Pytorch qui prend en charge la version CUDA correspondante. Vous pouvez afficher la version CUDA prise en charge en exécutant la commande nvidia-SMI. Version CPU: Si vous n'avez pas de GPU ou que vous ne souhaitez pas utiliser de GPU, vous pouvez choisir une version CPU de Pytorch. 2. Version Python Pytorch

Minio Object Storage: Déploiement haute performance dans le système Centos System Minio est un système de stockage d'objets distribué haute performance développé sur la base du langage Go, compatible avec Amazons3. Il prend en charge une variété de langages clients, notamment Java, Python, JavaScript et GO. Cet article introduira brièvement l'installation et la compatibilité de Minio sur les systèmes CentOS. Compatibilité de la version CentOS Minio a été vérifiée sur plusieurs versions CentOS, y compris, mais sans s'y limiter: CentOS7.9: fournit un guide d'installation complet couvrant la configuration du cluster, la préparation de l'environnement, les paramètres de fichiers de configuration, le partitionnement du disque et la mini

CENTOS L'installation de Nginx nécessite de suivre les étapes suivantes: Installation de dépendances telles que les outils de développement, le devet PCRE et l'OpenSSL. Téléchargez le package de code source Nginx, dézippez-le et compilez-le et installez-le, et spécifiez le chemin d'installation AS / USR / LOCAL / NGINX. Créez des utilisateurs et des groupes d'utilisateurs de Nginx et définissez les autorisations. Modifiez le fichier de configuration nginx.conf et configurez le port d'écoute et le nom de domaine / adresse IP. Démarrez le service Nginx. Les erreurs communes doivent être prêtées à prêter attention, telles que les problèmes de dépendance, les conflits de port et les erreurs de fichiers de configuration. L'optimisation des performances doit être ajustée en fonction de la situation spécifique, comme l'activation du cache et l'ajustement du nombre de processus de travail.
