python 文件目录_python文件及目录操作

python文件及目录操作

读/写文件

新建/打开文件 写入

#举个例子,打开D:\test\data.txt

#以写入模式打开文件

#如果test(上级目录)不存在则报错

#如果data.txt(文件)不存在则创建

fd = open('filename','w')

#如果文件里面已经有内容,那么内容会被清空

fd.write('stirng')

fd.close()

打开文件 读入

#举个例子,打开D:\test\data.txt

#以读入模式打开文件

#如果test(上级目录)不存在则报错

#如果data.txt(文件)不存在则报错

fd = open('filename','r')

#read不传入参数,那么会读取整个文件

content = fd.read()

fd.close()

注意: open第一个参数如果是字符串常量(手工输入)的话,那么会在工作目录中查找,但是,如果传入的是一个字符串变量的话,该字符串需要是该文件的绝对路径

目录操作

新建目录

#例子,当前工作目录C:\test test目录下src以及其之下的子目录python都不存在

#dirname C:\test\src\python

makedirs(C:\test\src\python) #或者 makedirs(dirname)

#第一参数如果是字符串常量,那么会在工作目录中创建,但是如果是一个字符串变量,那么会生成该绝对路径(沿途不存在的路径也会创建)

#python会把以'\'分割的最后一串字符串(python)视为目录

#如果该目录已存在,那么会报错

#可提前判断一下是否存在该目录

os.path.exists('C:\test\src\python')

浏览目录

方式1

import os

#列出指定目录下的所有文件

#files 里面既包含文件名也包含目录名

files_and_dirs = os.listdir(dir)

#一般来说会用一个for循环来逐个判断

for name in files_and_dirs:

#所以需要判断是文件还是目录,以便执行不同的操作

#是否是目录

#如果要遍历该路径下所有文件/目录,可以使用递归

os.path.isdir(files_and_dirs)

是否是文件

os.path.isfile(files_and_dirs)

方式2

可以直接获得所有信息,不需要手动判断

for root, dirs, files in os.walk(file_dir):

print(root) #当前目录路径

print(dirs) #当前路径下所有子目录

print(files) #当前路径下所有非目录子文件

正则表达式

import re

这里,有关正则表达式的语法在此不多讲,主要讲如何在python中调用正则

明确使用正则的目的

查找字符串

#例子

source = """![1573180919937](C:\\typora-user-images\\1573180919937.png)"""

#模式串

pat = r'!\[(.+)\]\((.+)\)'

#match只匹配source字符串开头,如果前面部分无法匹配,那么就直接返回了

#search会匹配完整个source

mat_res = re.search(pat,source)

if mat_res:

print mat_res.group()

print mat_res.group(1)

print mat_res.group(2) #这里的group需要在pat中使用`()`捕获,如果没有捕获到那么调用时会报错

注意:

如果有多个group匹配到,那么只会返回最后的一个

20191109081725.png

替换字符串

方式1:直接替换,new_str与上一次匹配的结果无关

new_source = source.replace(mat_res.group(1),new_str)

方式2:利用正则特性,匹配时替换,这使得在替换的过程中可以使用上一次匹配到的结果

>>> def dashrepl(matchobj):

... if matchobj.group(0) == '-': return ' '

... else: return '-'

#如果是'-'那么就变成空格,如果是两个'-'那么就变成一个'-'

>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')

'pro--gram files'

#当然,也支持直接替换

>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)

'Baked Beans & Spam'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值