操作文件夹及机器学习预备知识
今天来介绍python如何操作文件夹以及为机器学习做准备的一些库numpy、panda(矩阵,表格相关)。这一篇博客算是python基础知识的结束,也算是下一个部分知识机器学习的开端。也简单总结一下我们这两周学习的内容:1、python:从软件安装,环境部署开始,到python基本知识(数据类型、变量命名规则等)到程序控制语句(循环,判断等),到后面学习函数,类,库的知识,这三个是层层升级,封装的越来越好用的工具。通过这些工具我们实现了很多项目,如jieba分词库实现的判断评论好坏,requests库实现的爬取虎扑热榜的信息,我们日后的目标岗位(ai应用开发)就是如此,基于别人写好的库去实现大模型的落地。2、Linux系统相关知识:Linux多用于企业服务器的操作系统,Linux本质是文件操作系统,我们学习了各种命令,也可以把多条命令写成一个脚本,即shell编程——Linux系统可以直接使用的编程语言,和其他编程语言一样,从变量命名规则到程序控制语句的学习,重定向,脚本传参这些知识点不知道大家是否还有印象。
操作文件夹:
python操作文件夹使用到的是os库,这是python自带的标准库。
操作文件路径:
获取当前路径:getcwd(),创建文件夹:mkdir()和makedirs() , 拼接路径:join(),跳转路径:chdir(),判断相对路径和绝对路径:isabs(),获取文件路径和文件名:basename(),dirname(),split()。
操作文件和文件夹:
查询文件大小getsize(),删除文件和文件夹:remove(),rmdir(),重命名文件或文件夹:renamen(),renamens(), 复制文件:link(),获取文件夹中的全部文件名:listdir(),判断文件和文件夹:exists(),isfile(),isdir()
执行其他应用程序:
操作系统中的命令,system()执行命令,popen()方法
sys库:
获取python信息,退出程序argv获取输入命令,显示或获取数据流
sys.argv()实现项目自动化部署:
我们重点先来介绍python标准库sys库的argv()方法,这是我们以后很实用的方法,主要用来实现文件传参,有点类似我们shell编程中的$。通过这个方法我们可以实现项目的部署:
我们执行python文件有三种方法:
1、pycharm中运行。2、在命令行中输入.py文件的完整路径。3、找到文件位置,双击。
事实上,我们的.py文件和我们当时shell脚本文件一样,可以进行参数传递,给大家复习一下:
我们.py文件也可以进行对文件的参数传递:
1、向.py文件传递参数的方法:
①命令行中,在文件路径后输入:-参数(-不是必要的格式,直接写参数也行)
②pycharm中:鼠标右击选择修改运行配置
在形参里填写需要传递的参数:
2、获取传入的参数
sys.argv()会获取传入的参数,参数以空格分隔,以列表的形式返回,列表的索引0纸箱的内容是文件的路径。
这里我们传入三个参数:1、2、3。我们在文件中打印sys.argv,执行的结果是返回一个列表,列表的第一个元素是文件的绝对路径。
3、项目案例:实现自动化安装第三方库
目标:如果参数中含有想要安装的库名,则进行安装
import sys
import os #导入os库,实现操作系统执行命令
for i in range(1,len(sys.argv)): #对输入的所有参数进行遍历
if sys.argv[i]=="requests": #若参数为requests,则执行下面命令
print("安装request")
os.system("pip install requests") #在命令行窗口执行安装requests库
elif sys.argv[i]=="pyinstaller":
print("安装pyinstaller")
os.system("pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple") #同理,若参数有pyinstaller则安装,这里使用了国内镜像地址进行安装
命令行传参执行:
这里我之前安装过pyinstaller库,所以显示already satisfied。
Python文件路径和系统操作指南
您提供的内容涉及Python中处理文件路径、操作文件/文件夹、执行命令以及使用sys库的常用函数。这些功能主要基于Python的标准库模块,如os、os.path和sys。下面我将以结构化的方式逐步解释这些函数的功能、用法和注意事项,确保回答真实可靠。我会先概述模块,然后分组讨论函数,最后提供简单的代码示例来帮助理解。
1. 模块概述
- os模块:提供与操作系统交互的函数,包括文件路径操作、文件和文件夹管理。
- os.path模块:专门处理文件路径相关操作,如拼接、分割和判断路径属性。
- sys模块:用于访问Python解释器的系统信息、命令行参数和数据流。
接下来,我将分组解释函数,并强调关键点:
- 所有函数都需要导入相关模块后才能使用,例如
import os或import sys。 - 路径操作中,路径可以是相对路径或绝对路径,需注意操作系统的兼容性(如Windows和Linux的路径分隔符不同)。
2. 操作文件路径
这些函数主要用于处理文件路径的获取、创建、跳转和判断。核心模块是os和os.path。
-
获取当前路径:
os.getcwd()- 功能:返回当前工作目录的绝对路径。
- 示例:
current_dir = os.getcwd()会返回类似/home/user的字符串。
-
创建文件夹:
os.mkdir(path)和os.makedirs(path)- 功能:
os.mkdir(path):创建一个单层目录(如果父目录不存在,会失败)。os.makedirs(path):递归创建多层目录(如果中间目录不存在,会自动创建)。
- 示例:
os.mkdir('new_folder')在当前目录下创建new_folder;os.makedirs('dir1/dir2')创建嵌套目录。
- 功能:
-
拼接路径:
os.path.join(path1, path2, ...)- 功能:安全地拼接多个路径组件,自动处理分隔符(如Linux的
/或Windows的\)。 - 示例:
full_path = os.path.join('folder', 'file.txt')可能返回folder/file.txt。
- 功能:安全地拼接多个路径组件,自动处理分隔符(如Linux的
-
跳转路径:
os.chdir(path)- 功能:改变当前工作目录到指定路径。
- 注意事项:如果路径不存在,会引发异常(如
FileNotFoundError)。 - 示例:
os.chdir('../parent_dir')跳转到上级目录。
-
判断绝对路径:
os.path.isabs(path)- 功能:检查路径是否为绝对路径(以根目录开始)。
- 示例:
is_absolute = os.path.isabs('/home/user')返回True;如果是user/file.txt,返回False。
-
获取文件路径和文件名:
os.path.basename(path),os.path.dirname(path),os.path.split(path)- 功能:
basename(path):返回路径中的文件名部分(如file.txt)。dirname(path):返回路径中的目录部分(如/home/user)。split(path):返回一个元组(目录路径, 文件名)。
- 示例:
os.path.split('/home/user/file.txt')返回('/home/user', 'file.txt')。
- 功能:
3. 操作文件和文件夹
这些函数用于文件/文件夹的查询、删除、重命名、复制和列表操作,主要来自os模块。
-
查询文件大小:
os.path.getsize(path)- 功能:返回文件的大小(字节数)。如果路径是目录,会引发异常。
- 示例:
size = os.path.getsize('data.txt')返回文件大小。
-
删除文件和文件夹:
os.remove(path),os.rmdir(path)- 功能:
remove(path):删除文件(不能是目录)。rmdir(path):删除空目录(如果目录非空,会失败)。
- 注意事项:删除操作需谨慎,建议先检查路径存在性。
- 示例:
os.remove('temp.txt')删除文件;os.rmdir('empty_dir')删除空目录。
- 功能:
-
重命名文件或文件夹:
os.rename(src, dst)- 功能:重命名或移动文件/目录(从
src到dst)。 - 注意:用户提到的
renamen()和renamens()可能为笔误;在Python中,标准函数是os.rename()。 - 示例:
os.rename('old.txt', 'new.txt')重命名文件。
- 功能:重命名或移动文件/目录(从
-
复制文件:
os.link(src, dst)- 功能:创建硬链接(相当于复制文件,但不复制数据,仅增加引用计数)。
- 注意:这不同于文件复制(如使用
shutil.copy()),硬链接在Unix-like系统有效,Windows可能有限制。 - 示例:
os.link('source.txt', 'destination.txt')创建硬链接。
-
获取文件夹中的全部文件名:
os.listdir(path)- 功能:返回指定目录下的所有文件和子目录名列表(不包括
.和..)。 - 示例:
files = os.listdir('.')返回当前目录的文件列表。
- 功能:返回指定目录下的所有文件和子目录名列表(不包括
-
判断文件和文件夹:
os.path.exists(path),os.path.isfile(path),os.path.isdir(path)- 功能:
exists(path):检查路径是否存在。isfile(path):检查路径是否为文件。isdir(path):检查路径是否为目录。
- 示例:
if os.path.isfile('data.txt'):判断是否为文件。
- 功能:
4. 执行其他应用程序
这些函数允许Python脚本执行外部系统命令,来自os模块。
-
system()执行命令:
os.system(command)- 功能:执行一个系统命令(字符串形式),并返回命令的退出状态码(0表示成功)。
- 示例:
os.system('ls -l')在Linux上列出目录内容。
-
popen()方法:
os.popen(command)- 功能:执行命令并返回一个文件对象,用于读取命令输出。
- 示例:
output = os.popen('date').read()获取当前日期输出。
5. sys库功能
sys模块提供与Python解释器交互的函数,用于获取信息、控制程序流和处理数据流。
-
获取Python信息:
sys.version或sys.version_info- 功能:返回Python版本信息(字符串或元组形式)。
- 示例:
print(sys.version)显示版本如3.9.0。
-
退出程序:
sys.exit([status])- 功能:退出Python程序,可选状态码(0表示正常退出)。
- 示例:
sys.exit(0)正常终止脚本。
-
argv获取输入命令:
sys.argv- 功能:返回命令行参数列表(脚本名是第一个元素)。
- 示例:运行
python script.py arg1 arg2,则sys.argv[0]是script.py,sys.argv[1]是arg1。
-
显示或获取数据流:
sys.stdin,sys.stdout,sys.stderr- 功能:
stdin:标准输入流(用于读取用户输入)。stdout:标准输出流(用于打印信息)。stderr:标准错误流(用于输出错误)。
- 示例:
sys.stdout.write('Hello')输出文本。
- 功能:
6. 代码示例
以下是一个简单的Python脚本示例,演示上述函数的综合用法。确保在运行前导入模块。
import os
import sys
# 获取当前路径并打印
current_dir = os.getcwd()
print(f"当前目录: {current_dir}")
# 创建文件夹
os.makedirs('test_dir/sub_dir', exist_ok=True) # 递归创建,如果存在则忽略
# 拼接路径
file_path = os.path.join('test_dir', 'example.txt')
# 写入文件
with open(file_path, 'w') as f:
f.write("Hello, World!")
# 查询文件大小
size = os.path.getsize(file_path)
print(f"文件大小: {size} 字节")
# 判断文件属性
if os.path.exists(file_path) and os.path.isfile(file_path):
print("文件存在且是文件类型")
# 重命名文件
os.rename(file_path, os.path.join('test_dir', 'renamed.txt'))
# 列出目录内容
files = os.listdir('test_dir')
print(f"目录内容: {files}")
# 执行系统命令(列出目录)
os.system('ls test_dir')
# 使用sys模块
print(f"Python版本: {sys.version}")
print(f"命令行参数: {sys.argv}")
# 退出程序
sys.exit(0)
7. 注意事项
- 错误处理:文件操作可能引发异常(如
FileNotFoundError或PermissionError),建议使用try-except块。 - 跨平台兼容性:路径分隔符在不同系统不同(如
/vs\),os.path.join()会自动处理。 - 安全性:执行命令(
os.system())有安全风险(如命令注入),应避免使用用户输入直接构造命令。 - 替代模块:对于高级文件操作(如复制文件夹),可以使用
shutil模块(如shutil.copytree())。
如果您有具体场景或问题(如某个函数的使用细节),请提供更多信息,我可以进一步解释或给出针对性建议。
Python文件路径和系统操作指南
您提供的内容涉及Python中处理文件路径、操作文件/文件夹、执行命令以及使用sys库的常用函数。这些功能主要基于Python的标准库模块,如os、os.path和sys。下面我将以结构化的方式逐步解释这些函数的功能、用法和注意事项,确保回答真实可靠。我会先概述模块,然后分组讨论函数,最后提供简单的代码示例来帮助理解。
1. 模块概述
- os模块:提供与操作系统交互的函数,包括文件路径操作、文件和文件夹管理。
- os.path模块:专门处理文件路径相关操作,如拼接、分割和判断路径属性。
- sys模块:用于访问Python解释器的系统信息、命令行参数和数据流。
接下来,我将分组解释函数,并强调关键点:
- 所有函数都需要导入相关模块后才能使用,例如
import os或import sys。 - 路径操作中,路径可以是相对路径或绝对路径,需注意操作系统的兼容性(如Windows和Linux的路径分隔符不同)。
2. 操作文件路径
这些函数主要用于处理文件路径的获取、创建、跳转和判断。核心模块是os和os.path。
-
获取当前路径:
os.getcwd()- 功能:返回当前工作目录的绝对路径。
- 示例:
current_dir = os.getcwd()会返回类似/home/user的字符串。
-
创建文件夹:
os.mkdir(path)和os.makedirs(path)- 功能:
os.mkdir(path):创建一个单层目录(如果父目录不存在,会失败)。os.makedirs(path):递归创建多层目录(如果中间目录不存在,会自动创建)。
- 示例:
os.mkdir('new_folder')在当前目录下创建new_folder;os.makedirs('dir1/dir2')创建嵌套目录。
- 功能:
-
拼接路径:
os.path.join(path1, path2, ...)- 功能:安全地拼接多个路径组件,自动处理分隔符(如Linux的
/或Windows的\)。 - 示例:
full_path = os.path.join('folder', 'file.txt')可能返回folder/file.txt。
- 功能:安全地拼接多个路径组件,自动处理分隔符(如Linux的
-
跳转路径:
os.chdir(path)- 功能:改变当前工作目录到指定路径。
- 注意事项:如果路径不存在,会引发异常(如
FileNotFoundError)。 - 示例:
os.chdir('../parent_dir')跳转到上级目录。
-
判断绝对路径:
os.path.isabs(path)- 功能:检查路径是否为绝对路径(以根目录开始)。
- 示例:
is_absolute = os.path.isabs('/home/user')返回True;如果是user/file.txt,返回False。
-
获取文件路径和文件名:
os.path.basename(path),os.path.dirname(path),os.path.split(path)- 功能:
basename(path):返回路径中的文件名部分(如file.txt)。dirname(path):返回路径中的目录部分(如/home/user)。split(path):返回一个元组(目录路径, 文件名)。
- 示例:
os.path.split('/home/user/file.txt')返回('/home/user', 'file.txt')。
- 功能:
3. 操作文件和文件夹
这些函数用于文件/文件夹的查询、删除、重命名、复制和列表操作,主要来自os模块。
-
查询文件大小:
os.path.getsize(path)- 功能:返回文件的大小(字节数)。如果路径是目录,会引发异常。
- 示例:
size = os.path.getsize('data.txt')返回文件大小。
-
删除文件和文件夹:
os.remove(path),os.rmdir(path)- 功能:
remove(path):删除文件(不能是目录)。rmdir(path):删除空目录(如果目录非空,会失败)。
- 注意事项:删除操作需谨慎,建议先检查路径存在性。
- 示例:
os.remove('temp.txt')删除文件;os.rmdir('empty_dir')删除空目录。
- 功能:
-
重命名文件或文件夹:
os.rename(src, dst)- 功能:重命名或移动文件/目录(从
src到dst)。 - 注意:用户提到的
renamen()和renamens()可能为笔误;在Python中,标准函数是os.rename()。 - 示例:
os.rename('old.txt', 'new.txt')重命名文件。
- 功能:重命名或移动文件/目录(从
-
复制文件:
os.link(src, dst)- 功能:创建硬链接(相当于复制文件,但不复制数据,仅增加引用计数)。
- 注意:这不同于文件复制(如使用
shutil.copy()),硬链接在Unix-like系统有效,Windows可能有限制。 - 示例:
os.link('source.txt', 'destination.txt')创建硬链接。
-
获取文件夹中的全部文件名:
os.listdir(path)- 功能:返回指定目录下的所有文件和子目录名列表(不包括
.和..)。 - 示例:
files = os.listdir('.')返回当前目录的文件列表。
- 功能:返回指定目录下的所有文件和子目录名列表(不包括
-
判断文件和文件夹:
os.path.exists(path),os.path.isfile(path),os.path.isdir(path)- 功能:
exists(path):检查路径是否存在。isfile(path):检查路径是否为文件。isdir(path):检查路径是否为目录。
- 示例:
if os.path.isfile('data.txt'):判断是否为文件。
- 功能:
4. 执行其他应用程序
这些函数允许Python脚本执行外部系统命令,来自os模块。
-
system()执行命令:
os.system(command)- 功能:执行一个系统命令(字符串形式),并返回命令的退出状态码(0表示成功)。
- 示例:
os.system('ls -l')在Linux上列出目录内容。
-
popen()方法:
os.popen(command)- 功能:执行命令并返回一个文件对象,用于读取命令输出。
- 示例:
output = os.popen('date').read()获取当前日期输出。
5. sys库功能
sys模块提供与Python解释器交互的函数,用于获取信息、控制程序流和处理数据流。
-
获取Python信息:
sys.version或sys.version_info- 功能:返回Python版本信息(字符串或元组形式)。
- 示例:
print(sys.version)显示版本如3.9.0。
-
退出程序:
sys.exit([status])- 功能:退出Python程序,可选状态码(0表示正常退出)。
- 示例:
sys.exit(0)正常终止脚本。
-
argv获取输入命令:
sys.argv- 功能:返回命令行参数列表(脚本名是第一个元素)。
- 示例:运行
python script.py arg1 arg2,则sys.argv[0]是script.py,sys.argv[1]是arg1。
-
显示或获取数据流:
sys.stdin,sys.stdout,sys.stderr- 功能:
stdin:标准输入流(用于读取用户输入)。stdout:标准输出流(用于打印信息)。stderr:标准错误流(用于输出错误)。
- 示例:
sys.stdout.write('Hello')输出文本。
- 功能:
6. 代码示例
以下是一个简单的Python脚本示例,演示上述函数的综合用法。确保在运行前导入模块。
import os
import sys
# 获取当前路径并打印
current_dir = os.getcwd()
print(f"当前目录: {current_dir}")
# 创建文件夹
os.makedirs('test_dir/sub_dir', exist_ok=True) # 递归创建,如果存在则忽略
# 拼接路径
file_path = os.path.join('test_dir', 'example.txt')
# 写入文件
with open(file_path, 'w') as f:
f.write("Hello, World!")
# 查询文件大小
size = os.path.getsize(file_path)
print(f"文件大小: {size} 字节")
# 判断文件属性
if os.path.exists(file_path) and os.path.isfile(file_path):
print("文件存在且是文件类型")
# 重命名文件
os.rename(file_path, os.path.join('test_dir', 'renamed.txt'))
# 列出目录内容
files = os.listdir('test_dir')
print(f"目录内容: {files}")
# 执行系统命令(列出目录)
os.system('ls test_dir')
# 使用sys模块
print(f"Python版本: {sys.version}")
print(f"命令行参数: {sys.argv}")
# 退出程序
sys.exit(0)
7. 注意事项
- 错误处理:文件操作可能引发异常(如
FileNotFoundError或PermissionError),建议使用try-except块。 - 跨平台兼容性:路径分隔符在不同系统不同(如
/vs\),os.path.join()会自动处理。 - 安全性:执行命令(
os.system())有安全风险(如命令注入),应避免使用用户输入直接构造命令。 - 替代模块:对于高级文件操作(如复制文件夹),可以使用
shutil模块(如shutil.copytree())。
如果您有具体场景或问题(如某个函数的使用细节),请提供更多信息,我可以进一步解释或给出针对性建议。
更多推荐

所有评论(0)