百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[其它内容] 用os和shutil模块操作文件系统的实用技巧 [复制链接]
查看:99 | 回复:1

1477

主题

1656

帖子

9

积分

落伍者(一心一意)

Rank: 1

贡献
685
鲜花
0
注册时间
2016-6-22

落伍者落伍微信绑定落伍手机绑定

发表于 2024-8-15 16:38:55 | 显示全部楼层 |阅读模式 来自 中国江苏淮安
华科云商丑图1.jpg
在Python中,操作文件系统是开发过程中经常遇到的任务。Python标准库中的`os`和`shutil`模块提供了许多函数和方法,帮助我们在文件系统中执行各种操作,如文件和目录的创建、删除、复制、移动等。本文将介绍使用`os`和`shutil`模块操作文件系统的实用技巧,帮助你在日常开发中更加高效地管理文件和目录。

1. 导入 `os` 和 `shutil` 模块

首先,我们需要导入`os`和`shutil`模块:

```python

import os

import shutil

```

2. 获取和设置当前工作目录

在Python脚本中,当前工作目录是指脚本执行时默认的目录位置。可以使用`os`模块来获取和设置当前工作目录。

2.1 获取当前工作目录

```python

current_dir = os.getcwd()

print(f"当前工作目录: {current_dir}")

```

2.2 设置当前工作目录

```python

new_dir = "/path/to/directory"

os.chdir(new_dir)

print(f"工作目录已更改为: {new_dir}")

```

3. 创建和删除目录

使用`os`模块可以轻松创建和删除目录。

3.1 创建目录

使用`os.mkdir()`可以创建一个单层目录。如果需要创建多层嵌套的目录,可以使用`os.makedirs()`。

```python

# 创建单层目录

os.mkdir('new_folder')

# 创建多层目录

os.makedirs('parent_folder/child_folder')

```

3.2 删除目录

使用`os.rmdir()`可以删除一个空目录。如果要删除包含文件的目录,需要使用`shutil.rmtree()`。

```python

# 删除空目录

os.rmdir('new_folder')

# 删除包含文件的目录

shutil.rmtree('parent_folder')

```

4. 创建和删除文件

4.1 创建文件

可以通过Python内建的`open()`函数创建一个新文件。

```python

with open('example.txt', 'w') as f:

  f.write('This is a new file.')

```

4.2 删除文件

使用`os.remove()`可以删除指定的文件。

```python

os.remove('example.txt')

```

5. 复制和移动文件

`shutil`模块提供了强大的函数来复制和移动文件和目录。

5.1 复制文件

使用`shutil.copy()`或`shutil.copy2()`可以复制文件。`shutil.copy2()`会保留文件的元数据(如修改时间)。

```python

# 复制文件,不保留元数据

shutil.copy('source.txt', 'destination.txt')

# 复制文件,保留元数据

shutil.copy2('source.txt', 'destination.txt')

```

5.2 复制目录

使用`shutil.copytree()`可以递归复制整个目录树。

```python

shutil.copytree('source_folder', 'destination_folder')

```

5.3 移动文件和目录

使用`shutil.move()`可以移动文件或目录。

```python

shutil.move('source.txt', 'new_location/source.txt')

shutil.move('source_folder', 'new_location/source_folder')

```

6. 列出目录内容

使用`os.listdir()`可以列出指定目录中的所有文件和子目录。

```python

files_and_folders = os.listdir('.')

print(f"目录中的内容: {files_and_folders}")

```

如果需要获取更详细的信息,可以结合`os.scandir()`或者`os.walk()`。

```python

# 使用 os.scandir()

with os.scandir('.') as entries:

  for entry in entries:

      print(f"{entry.name} is a {'directory' if entry.is_dir() else 'file'}")

# 使用 os.walk() 遍历目录树

for root, dirs, files in os.walk('.'):

  print(f"根目录: {root}")

  print(f"子目录: {dirs}")

  print(f"文件: {files}")

```

7. 文件和目录的权限管理

使用`os`模块可以管理文件和目录的权限。

7.1 修改权限

使用`os.chmod()`可以修改文件或目录的权限。权限通常以八进制表示。

```python

# 将文件设置为只读

os.chmod('example.txt', 0o444)

```

7.2 修改所有者

使用`os.chown()`可以更改文件或目录的所有者和组。

```python

# 更改文件所有者(需要特权)

# os.chown('example.txt', uid, gid)

```

8. 获取文件或目录的信息

使用`os.stat()`可以获取文件或目录的详细信息,如大小、权限、最后访问时间等。

```python

file_info = os.stat('example.txt')

print(f"文件大小: {file_info.st_size} 字节")

print(f"最后访问时间: {file_info.st_atime}")

```

9. 处理路径

在文件系统操作中,路径管理非常重要。`os.path`模块提供了丰富的路径处理功能。

9.1 拼接路径

使用`os.path.join()`可以安全地拼接路径。

```python

full_path = os.path.join('folder', 'subfolder', 'file.txt')

print(f"完整路径: {full_path}")

```

9.2 判断路径类型

使用`os.path`可以判断路径是否存在,以及它是文件还是目录。

```python

if os.path.exists('example.txt'):

  if os.path.isfile('example.txt'):

      print("这是一个文件")

  elif os.path.isdir('example.txt'):

      print("这是一个目录")

```

9.3 获取文件名和目录名

使用`os.path.basename()`和`os.path.dirname()`可以分别获取路径中的文件名和目录名。

```python

path = '/path/to/some/file.txt'

print(f"文件名: {os.path.basename(path)}")

print(f"目录名: {os.path.dirname(path)}")

```

9.4 获取文件扩展名

使用`os.path.splitext()`可以分离文件名和扩展名。

```python

file_name, file_extension = os.path.splitext('example.txt')

print(f"文件名: {file_name}")

print(f"扩展名: {file_extension}")

```

10. 高级技巧:临时文件和目录

使用`tempfile`模块可以创建临时文件和目录,这在需要处理临时数据时非常有用。

```python

import tempfile

# 创建一个临时文件

with tempfile.NamedTemporaryFile(delete=False) as tmp_file:

  print(f"临时文件: {tmp_file.name}")

# 创建一个临时目录

with tempfile.TemporaryDirectory() as tmp_dir:

  print(f"临时目录: {tmp_dir}")

```

Python中的`os`和`shutil`模块提供了全面的文件系统操作功能。从基本的文件和目录创建、删除,到复杂的路径管理和权限控制,这些模块为开发者处理文件系统提供了强大的工具。通过掌握这些实用技巧,你可以更加高效和安全地管理和操作文件系统。无论是在开发中还是在处理自动化任务中,这些技巧都能为你的工作带来极大的便利。
企业专线拨号VPS动态IP派克斯ADSL本地拨号,联系QQ174629754
回复

使用道具 举报

372

主题

1万

帖子

647

积分

落伍者(一心一意)

Rank: 1

贡献
2388
鲜花
0
注册时间
2020-6-17

落伍手机绑定落伍者

发表于 2024-8-16 14:05:00 | 显示全部楼层 来自 中国河南开封
愿收录[url=http://www.ytllck.com/news/gongsi/]超声波流量计[/url]
[url=http://www.ytllck.com/products/]流量计厂家[/url]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-25 00:55 , Processed in 0.055421 second(s), 34 queries , Gzip On.

返回顶部