Python目录与文件操作
一、判断一个路径是否存在
os.path.exists(path)
如果路径存在则返回True,否则返回False.
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new'
if os.path.exists(path):
print '你的电脑桌面存在名为new文件夹'
else:
print '你的电脑桌面不存在名为new文件夹'
二、目录
1、判断路径是否为目录
os.path.isdir(path)
如果为已存在目录则返回True,否则返回False.
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir
print os.path.isdir(path)
2、判断目录是否为空
判断目录是否为空前需确保path路径存在,且为目录。
os.listdir(path)
返回指定路径的所有文件的列表。
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir
if len(os.listdir(path)) == 0:
print 'empty'
else:
print 'not empty'
3、创建目录
创建目录前需确保path路径不存在。
os.mkdir(path[, mode])
创建一个目录
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new'
os.mkdir(path)
4、复制目录
shutil.copytree(src, dst, symlinks=False, ignore=None)
拷贝src目录下的所有内容到dst目录下,拷贝前要求dst目录不存在。
import shutil
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
src = desktop_dir + '\old'
dst = desktop_dir + '\new'
shutil.copytree(src, dst)
5、重命名目录(文件)
os.renames(old, new)
重命名目录或文件
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
old = desktop_dir + '\old.txt'
new = desktop_dir + '\new.txt'
os.renames(old, new)
6、移动目录(文件)
shutil.move(src, dst)
移动目录或文件
import shutil
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
src = desktop_dir + '\old.txt'
dst = desktop_dir + '\new'
shutil.move(src, dst)
7、删除目录
① 删除空目录
删除空目录前需确保目录存在,切为空。
os.rmdir(path)
删除一个存在的空目录.
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new'
os.rmdir(path)
② 递归删除非空目录
os.walk(top, topdown=True, onerror=None, followlinks=False)
以top-down或bottom-up的方式递归遍历整个目录,返回(dirpath, dirnames, filenames)元组。
os.remove(path)
删除一个指定的文件。
os.path.join(path1[, path2[, ...]])
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new'
for root, dirs, files in os.walk(path, False):
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
os.rmdir(path)
③ 使用shutil模块方法
shutil.rmtree(path[, ignore_errors[, onerror]])
删除一个目录树。
import os
import shutil
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new'
shutil.rmtree(path)
三、文件
1、判断路径是否为文件
os.path.isfile(path)
如果为已存在文件则返回True,否则返回False.
import os
import shutil
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
print os.path.isfile(path)
2、判断文件是否为空
os.stat(path)
获取文件的属性.
import os
import time
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
st = os.stat(path)
mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime = st
print "- size:", size, "bytes"
print "- owner:", uid, gid
print "- created:", time.ctime(ctime)
print "- last accessed:", time.ctime(atime)
print "- last modified:", time.ctime(mtime)
print "- mode:", oct(mode)
print "- inode/dev:", ino, dev
if size == 0:
print '文件为空'
else:
print '文件非空'
3、创建文件
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path,'w')
fp.close()
4、写入文件
① 覆盖写
write(b)
将b写入文件,并返回字节数.
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path, 'w')
input_content = '测试中文'
try:
content_byte = fp.write(input_content)
finally:
fp.close()
② 追加写
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path, 'a')
input_content = 'n追加一行'
try:
content_byte = fp.write(input_content)
finally:
fp.close()
5、读取文件
read(n)
读取n个字符,如果n为设置,则读取文件所有内容.
readline()
读取文件中的一行内容.
readlines()
读取文件中的每行内容,以列表形式返回.
① 读指定字符
import os
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path, 'r')
try:
output_content = fp.read(4)
print output_content
finally:
fp.close()
② 读一行内容
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path, 'r')
try:
output_content = fp.readline()
print output_content
finally:
fp.close()
③ 读所有行内容
import getpass
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
path = desktop_dir + '\new.txt'
fp = open(path, 'r')
try:
output_content = fp.readlines()
for every_line in output_content:
print every_line
finally:
fp.close()
6、复制文件
shutil.copyfile(src, dst)
将文件src的内容复制给文件dst,文件dst可以不存在,但src, dst都只能是文件.
import getpass
import shutil
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
src = desktop_dir + '\old.txt'
dst = desktop_dir + '\new.txt'
shutil.copyfile(src, dst)
shutil.copy(src, dst)
将文件src的内容复制给dst,若dst为目录,则在该目录下创建与src同名的文件。src只能是文件,dst可以是文件也可以是目录。
import getpass
import shutil
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
src = desktop_dir + '\old.txt'
dst = desktop_dir + '\new\'
shutil.copy(src, dst)
7、删除文件
os.remove(path)
import getpass
import os
# 获取当前系统用户名
user_name = getpass.getuser()
# 获取系统桌面目录
desktop_dir = 'C:\Users\' + user_name + '\Desktop'
print desktop_dir
src = desktop_dir + '\old.txt'
os.remove(src)
8、文件属性
os.stat(path)
Python目录与文件操作的更多相关文章
- [Python] 目录和文件操作
在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...
- python目录和文件操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 要操作目录,必须引入os模块 import os1.得到当前工作目录,即当前Python脚本工作的目录路径: os ...
- [python]目录及文件操作
Python OS模块和shutil模块 获取路径 # 获取当前路径 pwd = os.getcwd() # 获取上级路径 a_pwd = os.path.abspath(os.path.dirnam ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Linux 目录和文件操作
Linux常用命令--目录和文件操作 [目录]删除.复制.移动 : 1.删除文件夹用:rmdir 文件夹名 但是rmdir不能删除非空的文件夹,那如何删除非空文件夹呢: 2.通常情况下,删除文件用:r ...
- Python 目录和文件基本操作
今天在写一个小工具的过程中发现对目录和文件的基本操作不是很熟,特此把遇到的常用操作总结汇总下. 获取当前路径:os.getcwd() 目录操作:1.创建目录:os.mkdir('目录名')2.创建多级 ...
随机推荐
- php提取xml配置参数
demo1.php <?php class AddressManager{ private $addresses = array("ip地址1","ip地址2&qu ...
- Java数据结构和算法(1)之队列
1.队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插 ...
- 挖地雷dp c++
// // Created by Arc on 2020/4/27. // /*题文: * 在一个地图上有n个地窖 * ,每个地窖中没有一定数量的地雷, * 同时给出地窖之间连接的路径, * 并规定路 ...
- C/C++编程笔记:C语言实现连连看游戏,小白练手项目(源码分享)
本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...
- EC R 87 div2 D. Multiset 线段树 树状数组 二分
LINK:Multiset 主要点一下 二分和树状数组找第k大的做法. 线段树的做法是平凡的 开一个数组实现就能卡过. 考虑如树状数组何找第k大 二分+查询来判定是不优秀的. 考虑树状数组上倍增来做. ...
- 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数
LINK:牛牛的树行棋 本来是不打算写题解的. 不过具体思考 还是有一段时间的. 看完题 一直想转换到阶梯NIM的模型上 转换失败. 考虑SG函数. 容易发现 SG函数\(sg_x=max{sg_{t ...
- python之路第一节-pip的使用
第一次写博客,一边吃着旺仔冻痴一边学着python,爽~ 我之理解pip 首先,python封装好了大量的函数,这些函数存在各种各样的库中. 那么怎么去向我们可爱的pycharm等软件导入这些库呢,两 ...
- “商家参数格式有误”应用切微信H5支付完美解决方案
一.业务场景发生 最近在跟一些合作公司作业务对接,在对方的APP中接入我们的H5支付,包括微信和支付宝. 那就开搞,进展顺利,貌似一切都在掌握之中,给到对方一个链接即可调起支付.形如: https:/ ...
- AbstractRoutingDataSource 实现动态数据源切换原理简单分析
AbstractRoutingDataSource 实现动态数据源切换原理简单分析 写在前面,项目中用到了动态数据源切换,记录一下其运行机制. 代码展示 下面列出一些关键代码,后续分析会用到 数据配置 ...
- 什么是DO,DTO,VO,POJO
俗话说,没有规矩不成方圆,今天来说一下 Java 中的各种 O(bject). 为什么会出现这些 O? 我们知道,这些 O 不管叫什么名字,其本质都还是对象(Object),既然本质都一样,为什么非要 ...