今天来介绍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。
  • 跳转路径: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。
  • 跳转路径: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())。

如果您有具体场景或问题(如某个函数的使用细节),请提供更多信息,我可以进一步解释或给出针对性建议。

更多推荐