前言
首先介绍一下什么叫做相对路径和绝对路径,我们程序狗家族想必都是懂这个的,但是难免会有童鞋忘记。所以码出来供大家快速回忆一下。
相对路径
相对路径是相对于文件当前的工作路径而言的
绝对路径
绝对路径是由文件名和它的完整路径以及驱动器字母组成的,如果是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文件中。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]