域名转移 网站访问,做网站会用到的色彩代码单词,机关网站内容建设工作总结,dede模板网站如何搭建文章目录目录#xff1a;前言#xff1a;1、Python判断文件是否存在的几种方法#xff1a;1.1、使用os模块1.2、使用Try语句#xff08;比较严谨的写法#xff09;1.3、使用pathlib模块2、Python中写入List到文本中并换行的方法3、Python按行读取文件的几种简单实现方法3.…
文章目录目录前言1、Python判断文件是否存在的几种方法1.1、使用os模块1.2、使用Try语句比较严谨的写法1.3、使用pathlib模块2、Python中写入List到文本中并换行的方法3、Python按行读取文件的几种简单实现方法3.1、readline()3.2、fileinput3.3、readlines()3.4、文件迭代器4、Python在一个文件中追加文件内容5、Python去掉字符串中空格的几种方法6、Python实现定时任务7、python 删除非空文件夹目录
前言
虽然之前自学了些Python基础但是一段时间没用再加上学的时间也比较短搞的现在重拾Python写代码的时候总要去查一些API还是Coding不够仍需多加实践但整个过程又比较耗时。所以就准备把之前以及以后遇到的一些常用的功能Demo给记录下来方便自己后来查看。此文章会不定时一直更新。
1、Python判断文件是否存在的几种方法
通常在读写文件之前需要判断文件或目录是否存在不然某些处理方法可能会使程序出错。所以最好在做任何操作之前先判断文件是否存在。
这里将介绍三种判断文件或文件夹是否存在的方法分别使用os模块、Try语句、pathlib模块
1.1、使用os模块
os模块中的os.path.exists()方法用于检验文件是否存在。
判断文件或文件夹是否存在
import os
os.path.exists(test_file.txt)
#Trueos.path.exists(no_exist_file.txt)
#False其实这种方法还是有个问题假设你想检查文件“test_data”是否存在但是当前路径下有个叫“test_data”的文件夹这样就可能出现误判。为了避免这样的情况可以这样:
只检查文件
import os
os.path.isfile(test-data)通过这个方法如果文件”test-data”不存在将返回False反之返回True。 即是文件存在你可能还需要判断文件是否可进行读写操作。
1.2、使用Try语句比较严谨的写法
可以在程序中直接使用open()方法来检查文件是否存在和可读写。 语法 open() 如果你open的文件不存在程序会抛出错误使用try语句来捕获这个错误。 程序无法访问文件可能有很多原因 如果你open的文件不存在将抛出一个FileNotFoundError的异常; 文件存在但是没有权限访问会抛出一个PersmissionError的异常。 其实没有必要去这么细致的处理每个异常上面的这两个异常都是IOError的子类。所以可以将程序简化一下:
try:f open()f.close()
except IOError:print File is not accessible.使用try语句进行判断处理所有异常非常简单和优雅的。而且相比其他不需要引入其他外部模块。
1.3、使用pathlib模块
pathlib模块在Python3版本中是内建模块但是在Python2中是需要单独安装三方模块。 使用pathlib需要先使用文件路径来创建path对象。此路径可以是文件名或目录路径。
检查路径是否存在
path pathlib.Path(path/file)
path.exist()检查路径是否是文件
path pathlib.Path(path/file)
path.is_file()2、Python中写入List到文本中并换行的方法
f.writelines(lists) 是不换行的写入可用以下方法在写入时换行。
方法一
for line in lists:f.write(line\n)方法二
lists[line\n for line in lists]
f.writelines(lists)方法三
f.write(\n.join(lists))3、Python按行读取文件的几种简单实现方法
3.1、readline()
file open(sample.txt)
while 1:line file.readline()if not line:breakpass # do something
file.close()一行一行得从文件读数据显然比较慢不过很省内存测试读10M的sample.txt文件每秒大约读32000行
3.2、fileinput
import fileinput
for line in fileinput.input(sample.txt):pass写法简单一些不过测试以后发现每秒只能读13000行数据效率比上一种方法慢了两倍多
3.3、readlines()
file open(sample.txt)
while 1:lines file.readlines(100000)if not lines:breakfor line in lines:pass # do something
file.close()用同样的数据测试它每秒可以读96900行数据效率是第一种方法的3倍第二种方法的7倍
3.4、文件迭代器
每次只读取和显示一行读取大文件时应该这样
file open(sample.txt)
for line in file:pass # do something
file.close()4、Python在一个文件中追加文件内容
刚开始用的如下的write()方法发下会先把原文件的内容清空再写入新的东西文件里面每次都是最新生成的一个账号
mobile Method.createPhone()
file rD:\test.txt
with open(file, w) as f:f.write(mobile)查了资料关于open()的mode参数对于open方法来说本身就可以创建一个文件不需要重新new一个对象
r读w写a追加r rw可读可写文件若不存在就报错(IOError)w wr可读可写文件若不存在就创建a ar可追加可写文件若不存在就创建对应的如果是二进制文件就都加一个b就好啦rb wb ab rb wb ab发现方法用错了像这种不断生成新账号 增加写入的应该用追加‘a’ 改为如下后解决
mobile Method.createPhone()
file rD:\test.txt
with open(file, a) as f:f.write(mobile\n) #加\n换行显示5、Python去掉字符串中空格的几种方法
strip()把头和尾的空格去掉lstrip()把左边的空格去掉rstrip()把右边的空格去掉replace(‘c1’,‘c2’)把字符串里的c1替换成c2。故可以用replace(’ ‘,’’)来去掉字符串里的所有空格split()通过指定分隔符对字符串进行切片如果参数num 有指定值则仅分隔 num 个子字符串
In[2]: a ddd dfe dfd efre ddd
In[3]: a
Out[3]: ddd dfe dfd efre ddd
In[4]: a.strip()
Out[4]: ddd dfe dfd efre ddd
In[5]: a.lstrip()
Out[5]: ddd dfe dfd efre ddd
In[6]: a.rstrip()
Out[6]: ddd dfe dfd efre ddd
In[7]: a.replace( ,)
Out[7]: ddddfedfdefreddd
In[8]: a.split()
Out[8]: [ddd, dfe, dfd, efre, ddd]6、Python实现定时任务
threading的Timer threading模块中的Timer能够帮助实现定时任务而且是非阻塞的。 比如每3秒打印一次helloworld
def printHello(): print Hello World t Timer(2, printHello) t.start() if __name__ __main__: printHello() 7、python 删除非空文件夹
一般删除文件时使用os库然后利用os.remove(path)即可完成删除如果删除空文件夹则可使用os.removedirs(path)即可 但是如果需要删除整个文件夹且文件夹非空时使用os.removedirs(path)就会报错了此时可以使用shutil库该库为python内置库是一个对文件及文件夹高级操作的库可以与os库互补完成一些操作如文件夹的整体复制移动文件夹对文件重命名等
import os
import shutilos.remove(path) #删除文件
os.removedirs(path) #删除空文件夹shutil.rmtree(path) #递归删除文件夹参考 http://www.spiderpy.cn/blog/detail/28 https://www.cnblogs.com/SheilaSun/p/4380933.html https://www.cnblogs.com/feiyueNotes/p/7897064.html https://www.cnblogs.com/zywscq/p/5325604.html https://blog.csdn.net/xiaodongxiexie/article/details/77155864