前言
首先介绍一下什么叫做相对路径和绝对路径,我们程序狗家族想必都是懂这个的,但是难免会有童鞋忘记。所以码出来供大家快速回忆一下。
相对路径
相对路径是相对于文件当前的工作路径而言的
绝对路径
绝对路径是由文件名和它的完整路径以及驱动器字母组成的,如果是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文件中。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]