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 相关文章推荐
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
python线程池threadpool使用篇
Apr 27 Python
python实现俄罗斯方块游戏
Mar 25 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python中map的基本用法示例
Sep 10 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python getopt模块使用实例解析
Dec 18 Python
python重要函数eval多种用法解析
Jan 14 Python
Python xlwt模块使用代码实例
Jun 10 Python
Python和Bash结合在一起的方法
Nov 13 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 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读取目录下所有文件的代码
2008/01/07 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php购物车实现代码
2011/10/10 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python框架flask表单实现详解
2019/11/04 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
override和overload的区别
2016/03/09 面试题
你懂得怎么写自荐信吗?
2013/12/27 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
关于安全的演讲稿
2014/05/09 职场文书
教师个人发展总结
2015/02/11 职场文书
借条如何写
2015/05/26 职场文书
元旦晚会开场白
2015/05/29 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS