Python os 文件操作及运行程序等

本文深入讲解了Python中os模块的功能,包括目录操作如切换、创建、判断与删除,以及文件的读写、运行程序和错误处理技巧。通过具体示例,帮助读者掌握os模块在文件系统管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python OS 文件操作及运行程序等

1、os.chdir() 方法用于改变当前工作目录到指定的路径。

directory = r'C:\Users\Lenovo\Desktop'
os.chdir(directory)  # 切换到directory目录

2、os.mkdir() 方法用于以数字权限模式创建目录。

默认的模式为 0777 (八进制)。

for day in range(9, 21):    #-----------修改天数
    print('day:', day)
    data_dir_name = 'data_' + str(day)		#------------改文件夹名--------------
    #文件夹不存在即创建一个
    if not os.path.exists(data_dir_name):
        os.mkdir(data_dir_name)

3、报错日志:

  File "F:\Anaconda\package\envs\backstage\lib\site-packages\pandas\io\excel.py", line 307, in read_excel
    io = ExcelFile(io, engine=engine)
  File "F:\Anaconda\package\envs\backstage\lib\site-packages\pandas\io\excel.py", line 394, in __init__
    self.book = xlrd.open_workbook(self._io)
  File "F:\Anaconda\package\envs\backstage\lib\site-packages\xlrd\__init__.py", line 116, in open_workbook
    with open(filename, "rb") as f:
OSError: [Errno 22] Invalid argument: '\u202aC:/Users/Lenovo/Desktop/test.xlsx'
解决方案:
get_excel(r'C://Users//Lenovo//Desktop//test.xlsx')
由于平台BUG的原因,把盘符改成小写即可
get_excel(r'c://Users//Lenovo//Desktop//test.xlsx')
or
get_excel(r'c:/Users/Lenovo/Desktop/test.xlsx')

4、删除文件:

def remove_files(file_list):
    """
    删除相应的文件
    :param file_list:文件名路径列表,均为相对路径
    """
    directory = r'C:\Users\Lenovo\Desktop'
    os.chdir(directory)  # 切换到directory目录
    for elem in file_list:
        os.remove(elem)
    print('文件删除成功!')

5、运行程序

os模块中的system()函数可以方便地运行其他程序或者脚本。

语法如下:os.system(command)

命令行运行Python程序
import os
p = os.system("hello.py")	# "hello.py"在同一目录下,效果相当于用命令行启动该脚本
print(p)	# p == 0 运行成功,1表示失败

6、打开文件

在读取或写入文件之前,需要使用Python的内置open()函数打开文件。此函数创建一个文件对象,该对象将用于调用与其相关联的其他支持方法。

语法:
f = open(file_name [, access_mode][, buffering])
  • file_name参数是一个字符串值,指定要访问的文件的名称。
  • access_mode确定文件打开的模式,即读取,写入,追加等。可能的值的完整列表如下表所示。这是一个可选参数,默认文件访问模式为(r - 也就是只读)。
  • bufferin如果buffering值设置为0,则不会发生缓冲。如果缓冲值buffering为1,则在访问文件时执行行缓冲。如果将缓冲值buffering指定为大于1的整数,则使用指定的缓冲区大小执行缓冲操作。如果为负,则缓冲区大小为系统默认值(默认行为)。
编号模式描述
1r打开的文件为只读模式。文件指针位于文件的开头,这是默认模式。
2rb打开仅用二进制格式读取的文件。文件指针位于文件的开头,这是默认模式。
3r+打开读写文件。文件指针放在文件的开头。
4rb+以二进制格式打开一个用于读写文件。文件指针放在文件的开头。
5w打开仅供写入的文件。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件进行写入。
6wb打开仅用二进制格式写入的文件。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件进行写入。
7w+打开写入和取读的文件。如果文件存在,则覆盖现有文件。如果文件不存在,创建一个新文件进行阅读和写入。
8wb+打开一个二进制格式的写入和读取文件。如果文件存在,则覆盖现有文件。如果文件不存在,创建一个新文件进行阅读和写入。
9a打开一个文件进行追加。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。
10ab打开一个二进制格式的文件。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。
11a+打开一个文件,用于追加和阅读。如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行阅读和写入。
12ab+打开一个二进制格式的附加和读取文件。如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行读取和写入。
  • write()方法:将任何字符串写入打开的文件。重要的是要注意,Python字符串可以是二进制数据,而不仅仅是文本。
  • close()方法:刷新任何未写入的信息并关闭文件对象,之后不能再进行写入操作。
f =open('zj.txt', 'w')  # 读写模式
f.write('hello xlm') # 写入 hello xlm
f.close() 关闭文件

# 用with写
with open('zj.txt', 'r') as f:
    print(f.read()) # 全部读取

with open('zj.txt', 'r') as f:
    for line in f.readlines():
        print(line)   # 分行打印出来
        print(line.strip())  #去 除多余的换行

7、判断一个文件夹是否存在,如果不存在,自动创建

if not os.path.exists(path):
      os.makedirs(path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值