python脚本 —— 读写文件

利用python查看文件和文件路径信息

os库是python中用来获取文件与文件路径信息相关的库

查看当前的工作目录:os.getcwd() os.chdir()

每个运行在计算机上的程序,都有一个“当前工作目录”,或称cwd。在python中,利用os.getcwd()函数可以取得当前工作路径的字符串,并且可以利用os.chdir()改变它。

import os
# 获取当前路径
print(os.getcwd())
# 改变当前路径
os.chdir("/home/ubuntu")
print(os.getcwd())

输出:

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
/home/ubuntu/python_file
/home/ubuntu

值得一提的是,这里的chdir并不会改变终端的当前路径,它只会改变py文件中的当前路径。

创建文件夹: os.makedirs() 📂

python程序可以通过指定一个路径,使用os.makedirs创建文件夹。在这个路径上的所有中间文件夹如果没有创建,都会自动创建

import os
# 获取当前路径
current_path = os.getcwd()
# 在当前路径下创建file_manage 和中间文件夹files
os.makedirs(current_path+"/files/file_manage")

结果:
在这里插入图片描述

os.path模块

os.path模块包含了许多和文件名和文件路径相关的有用函数。完整文档点此:官方文档

处理绝对路径和相对路径

  • os.path.abspath(path):返回参数的绝对路径字符串
  • os.path.isabs(path):如果参数是绝对路径,就返回true;否则,返回false
  • os.path.relpath(path,start):返回从start路径到path的相对路径的字符串
import os

current_path = os.getcwd()
if os.path.isabs(current_path) == True:
    print(current_path+" is a absolute path")

# 如果传入.表示当前路径
if os.path.isabs(".") == True:
    print(". is not a absolute path")

print("current path is: "+os.path.abspath("."))
print("current path: "+os.path.abspath(".")+" to root dir \"home\" ways is "+os.path.relpath(".","/home"))

输出:

ubuntu@VM-0-2-ubuntu:~/python_file/Python$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
/home/ubuntu/python_file/Python is a absolute path
current path is: /home/ubuntu/python_file/Python
current path: /home/ubuntu/python_file/Python to root dir "home" ways is ubuntu/python_file/Python

获取路径,根据路径获取文件名

  • os.path.dirname(path):将返回一个字符串,包含path参数最后一个斜杠之前的所有内容
  • os.path.basename(path):返回path参数中最后一个斜杠之后的所有内容
import os

current_name = os.getcwd()+"/Python/file_manage.py"
print("dir is "+os.path.dirname(current_name))
print("file is "+os.path.basename(current_name))

输出:

ubuntu@VM-0-2-ubuntu:~/python_file/Python$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
dir is /home/ubuntu/python_file/Python/Python
file is file_manage.py

查看文件大小和文件夹内容📂

  • os.path.getsize(path):返回参数path参数中文件的字节数
  • os.listdir(path):返回文件字符串的列表
import os

current_name = os.getcwd()
print(current_name+" size: "+str(os.path.getsize(current_name)))
# 获取当前路径下所有文件(夹)的大小
for file in os.listdir(current_name):
    # 非文件夹
    if os.path.isdir(current_name+"/"+file) == False:
        print( file +" size: ",str(os.path.getsize(current_name+"/"+file)))
    # 文件夹
    else:
        print("(dir) "+file+" size: "+str(os.path.getsize(current_name+"/"+file)))

输出:

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
/home/ubuntu/python_file size: 4096
(dir) .vscode size: 4096
test.cpp size:  30
(dir) Python size: 4096
tempCodeRunnerFile.py size:  44

文件读写

以下内容适合纯文本文件

纯文本文件
纯文本文件只包含基本文本字符,不包含字体、大小和颜色信息。带有.txt扩展名的文本文件,以及带有.py扩展名的python脚本文件,都是纯文本文件的例子。
二进制文件
二进制文件是所有其他文件类型,诸如字处理文档、PDF、图像、电子表格和可执行程序

在python中,读写文件一般有三个步骤:

  • 调用open()函数,返回一个File对象
  • 调用File对象的read()或者write()方法
  • 调用File对象的close()方法,关闭该文件

打开文件并读取内容

open()函数传递一个字符串路径,就可以打开一个函数。同时还可以向其第二个参数指定打开方式,类似于C语言。之后,open函数会返回一个File对象。

既然有了File对象,就可以开始从它读取内容。

使用File对象的read()方法,可以将整个文件的内容读取为一个字符串值。

import os

current_path = os.getcwd()

file = open(current_path+"/Python/README.md","r")
file_content = file.read()
print(file_content)

输出:

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
# Python
python 学习代码

如果将文件的内容看成是单个大字符串,read方法就返回保存在该文件中的这个字符串;如果想要一行一行读取,就可以用到readlines()方法,从该文件取得一个字符串的列表。列表中的每个字符串就是文本中的每一行。

import os

current_path = os.getcwd()
file = open(current_path+"/Python/README.md")
lines = file.readlines()
for line in lines:
    print(line)

输出:

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/file_mange.py
# Python

python 学习代码

写入文件

python的写入跟C语言一样,都会覆盖原有的文件。如果想要添加内容,那么需要在open的时候指定第二个参数为”a“(追加模式)

如果传递给open的文件名不存在,写模式和追加模式都会创建一个新的空文件。在读取或写入文件后,调用close()方法,然后才能再次打开该文件。

import os

current_path = os.getcwd()
file = open(current_path+"/test.txt","a")
file.write("hello ")
file.write("world!\n")
file.write("\t\t\t\tby python")

file.close()

结果:
在这里插入图片描述

参考文献

[1]AI Sweigart.Python编程快速上手——让繁琐工作自动化.人民邮电出版社.2016.07
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenmingik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值