操作文件和目录

操作文件和目录

操作文件、目录,可以通过操作系统提供的命令来完成。比如dir、cp 等命令
如果要在Python程序中执行目录和文件的操作,可以通过调用操作系统提供的接口函数
Python 内置的 os 模块也可以直接调用操作系统提供的接口函数。

os 模块的基本功能:
import os

print(os.name) #输出操作系统的类型

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
Process finished with exit code 0

如果是 nt ,说明系统是Windows, 如果是 posix, 说明系统是Linux、Unix 或 Mac OS X

环境变量

查看系统的环境变量

import os
print(os.environ)

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'ANDROID_HOME': 'D:\\Local\\Android', 'APPDATA':...
Process finished with exit code 0

获取某个环境变量的值

1、

import os
print(os.environ.get('PATH'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Win....
Process finished with exit code 0

2、

import os
print(os.environ.get('x', 'default'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
default

Process finished with exit code 0

操作文件和目录

查看当前目录的绝对路径:

import os
print(os.path.abspath('.'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
E:\pyplace\learn_python3\learn\two\IO编程

Process finished with exit code 0

在某个目录下创建一个新目录,首先把新目录完整路径表示出来:

print(os.path.join('E:\\pyplace\\learn_python3\\learn\\two\\IO编程', 'testdir'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
E:\pyplace\learn_python3\learn\two\IO编程\testdir

Process finished with exit code 0

创建一个新目录:

import os
os.mkdir('E:\\pyplace\\learn_python3\\learn\\two\\IO编程\\testdir')

运行结果:在对应的目录下会有 testdir 文件产生

删除一个目录:

import os
os.rmdir('E:\\pyplace\\learn_python3\\learn\\two\\IO编程\\testdir')

运行结果:在对应的目录下 testdir 文件被删除了

把两个路径合成一个时,不要直接拼接字符串,而要通过 os.path.join() 函数,这样可以
正确的处理不同操作系统的路径分隔符。

在 Linux/Unix/Mac 下,os.path.join() 返的字符串:

part1/part2

而 Windows 下会返回这个样的字符串:

part1\part2

拼接:

import os
print(os.path.join('part1','part2'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
part1\part2

Process finished with exit code 0

也就是说他们的格式是不一样的,所以最好用函数进行拼接。拆分也是一样的道理,拆分使用 os.path.split() 函数,把一个路径拆分为
两部分,后一部分总是最后级别的目录或文件名:

拆分:

import os
print(os.path.split('/users/michael/testdir/file.txt'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
('/users/michael/testdir', 'file.txt')

Process finished with exit code 0

拆分直接得到扩展名:

import os
print(os.path.splitext('/path/to/file.txt'))

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
('/path/to/file', '.txt')

Process finished with exit code 0

文件操作

重命名:

import os
os.rename('test.txt', 'test.py')

运行结果:test.txt 变为 test.py

删除:

import os
os.remove('test.py')

运行结果:test.py 被删除

获取当前目录下所有的文件:

import os
print([x for x in os.listdir('.') if os.path.isfile(x)])

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
['bytesio.py', 'dir.py', 'StringIO 和 BytesIO.md', 'stringio.py', 'test.txt', 'with_file.py', '操作文件和目录.md', '文件读写.md']

Process finished with exit code 0

只获取.py为后缀的文件:

import os
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'])

运行结果:

E:\py\venv\Scripts\python.exe E:/pyplace/learn_python3/learn/two/IO编程/dir.py
nt
['bytesio.py', 'dir.py', 'stringio.py', 'with_file.py']

Process finished with exit code 0

总结:

  • 1、OS 模块可以直接调用系统的接口函数进行文件和目录的操作
  • 2、合成或者拆分路径最好通过函数,这样避免不同环境导致的差异
  • 3、通过函数快速的进行文件的查找过滤

github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值