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的整数,则使用指定的缓冲区大小执行缓冲操作。如果为负,则缓冲区大小为系统默认值(默认行为)。
编号 | 模式 | 描述 |
---|---|---|
1 | r | 打开的文件为只读模式。文件指针位于文件的开头,这是默认模式。 |
2 | rb | 打开仅用二进制格式读取的文件。文件指针位于文件的开头,这是默认模式。 |
3 | r+ | 打开读写文件。文件指针放在文件的开头。 |
4 | rb+ | 以二进制格式打开一个用于读写文件。文件指针放在文件的开头。 |
5 | w | 打开仅供写入的文件。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件进行写入。 |
6 | wb | 打开仅用二进制格式写入的文件。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件进行写入。 |
7 | w+ | 打开写入和取读的文件。如果文件存在,则覆盖现有文件。如果文件不存在,创建一个新文件进行阅读和写入。 |
8 | wb+ | 打开一个二进制格式的写入和读取文件。如果文件存在,则覆盖现有文件。如果文件不存在,创建一个新文件进行阅读和写入。 |
9 | a | 打开一个文件进行追加。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。 |
10 | ab | 打开一个二进制格式的文件。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于追加模式。如果文件不存在,它将创建一个新文件进行写入。 |
11 | a+ | 打开一个文件,用于追加和阅读。如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行阅读和写入。 |
12 | ab+ | 打开一个二进制格式的附加和读取文件。如果文件存在,则文件指针位于文件末尾。文件以附加模式打开。如果文件不存在,它将创建一个新文件进行读取和写入。 |
- 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)