Python3中简单的文件操作及两个简单小实例分享


Posted in Python onJune 18, 2017

前言

首先介绍一下什么叫做相对路径和绝对路径,我们程序狗家族想必都是懂这个的,但是难免会有童鞋忘记。所以码出来供大家快速回忆一下。

相对路径

相对路径是相对于文件当前的工作路径而言的

绝对路径

绝对路径是由文件名和它的完整路径以及驱动器字母组成的,如果是Windows系统,那么某一个文件的绝对路径可能是:

c:\pythonworkspace\firstpy.py

在Unix平台上,文件的绝对路径可能是: /home/sherlockblaze/Documents/pythonworkspace/firstpy.py

文件类型

文件大概可以分为文本文件和二进制文件。在不同操作系统下,可以用文本编辑器编辑的文件,都称为文本文件,那么其他的文件就属于二进制文件。而二进制文件相比与文本文件的优势在于二进制文件的处理效率更高一些。

读取文件的开始

读取一个文件的思路永远都是相同的,第一步自然就是打开一个文件。在python中我们通过如下代码使用open函数来打开一个文件。

input = open(filepath,mode)

我们的mode主要由以下几种方式。

模式 作用
r 读取模式
w 写入模式
a 追加模式
rb 读取二进制数据模式打开文件
wb 写入二进制数据模式打开文件

同样我们有两种途径来打开文件。

通过绝对路径

input = open("/Users/sherlockblaze/Documents/pythonworkspace/Test.txt","r")

通过相对路径(需要注意的是,我们通过相对路径是可以打开当前工作目录下的文件的,也就是说如果我的.py文件存在 /User/sherlock/Documents 下的话,我们通过相对路径打开的文件也同样存在当前路径下)

input = open("Test.txt","r")

注意

在Windows下我们通过绝对路径来打开文件的时候,我们需要在绝对文件名前加上一个 r 前缀,来表示这个字符串是一个行字符串,这样可以让python解释器将文件中的反斜线理解成字面意义上的反斜线。例如:

input = open(r"d:\pythonworkspace\Test.txt","r")

如果我们不添加 r 作为前缀,则需要用转义字符把上面的语句修改成如下所示:

input = open("d:\\pythonworkspace\\Test.txt","r")

向文件中写入数据

我们首先通过写入的方式打开文件,然后通过调用write方法,向文件中写入数据。

def main():
 input = open("Test.txt","w")
 input.write("SherlockBlaze")
 input.write("\t is the most handsome guy!\n")
 input.close()
 
main()

通过这种方式,我们往当前目录下的 Test.txt 文件中写入了 SherlockBlaze is the most handsome guy! 这句话,并且需要注意的是,我们在写完文件后,调用close()方法关闭了文件流。

常见小特性

当使用w模式打开一个文件时,如果文件不存在,open函数就会创建一个新文件,如果该文件存在,那么这个文件里的内容会被心的内容覆盖。当我们用读/写模式打开文件的时候,文件内部会添加一个叫做文件指针的特殊标记,文件的读写操作都发生在指针当前位置上。

判断文件是否存在

为了避免误操作,我们可以通过os.path模块中的isFile函数来判断一个文件是否存在。即:

import os.path
is os.paht.isfile("Test.txt"):
 print("Test.txt exists")
else:
 print("Test.txt doesn't exists")

简单小程序

输入文件路径,并且从中计算各个字母出现的次数

def main():
 filename = input("Enter a filename: ").strip()
 infile = open(filename,"r")
 counts = 26 * [0]
 for line in infile:
 countLetters(line.lower(),counts)
 for i in range(len(counts)):
 if counts[i] != 0:
 print(chr(ord('a') + i) + "appears " + str(counts[i])
 + (" time" if counts[i] == 1 else " times"))
 infile.close()
def countLetters(line,counts):
 for ch in line:
 if ch.isalpha():
 counts[ord(ch) - ord('a')] += 1
main()

思路简单叙述:首先创建数组,每当读取到一个字符,对对应位置的数字进行加一,最后在进行遍历得到输出。

下载网站源代码,然后写入目的文件中

import sys
import urllib
import urllib.request
import os.path
def download(url,num_retries = 2):
 print ('Downloading:',url)
 try:
 html = urllib.request.urlopen(url).read()
 except urllib.URLError as e:
 print ('Download error:',e.reason)
 html = None
 if num_retries > 0:
 if hasattr(e,'code') and 500 <= e.code <600:
 return download(url,num_retries-1)
 return html
def main():
 url = input("Enter a url:\n").strip()
 f2 = input("Enter a target file:\n").strip()
 if os.path.isfile(f2):
 print(f2 + " already exists")
 sys.exit()
 html = download(url)
 target = open(f2,"w")
 content = html.decode(encoding="utf-8")
 target.write(content)
 target.close()
main()

比如我输入网址 http://www.game2.cn/,在输入目的文件:game2.txt。即可进行下载并把对应html输入到当前工作目录的game2.txt文件中。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python调用java的Webservice示例
Mar 10 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
django模板语法学习之include示例详解
Dec 17 Python
Random 在 Python 中的使用方法
Aug 09 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
django正续或者倒序查库实例
May 19 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
python实现各进制转换的总结大全
Jun 18 #Python
Mac 上切换Python多版本
Jun 17 #Python
利用python实现xml与数据库读取转换的方法
Jun 17 #Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 #Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 #Python
Python生成随机密码的方法
Jun 16 #Python
Python操作SQLite数据库的方法详解
Jun 16 #Python
You might like
十天学会php之第一天
2006/10/09 PHP
php输出xml属性的方法
2015/03/19 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python中创建二维数组
2018/10/17 Python
python绘制中国大陆人口热力图
2018/11/07 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
初中生自我评价
2014/02/01 职场文书
开会迟到检讨书
2014/02/03 职场文书
财务总监管理职责范文
2014/03/09 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
python装饰器代码解析
2022/03/23 Python