Python3文件的簡單操作!

首先介紹一下什么叫做相對路徑和絕對路徑砖瞧,我們程序狗家族想必都是懂這個(gè)的息堂,但是難免會有童鞋忘記。所以碼出來供大家快速回憶一下块促。

相對路徑

相對路徑是相對于文件當(dāng)前的工作路徑而言的

絕對路徑

絕對路徑是由文件名和它的完整路徑以及驅(qū)動器字母組成的荣堰,如果是Windows系統(tǒng),那么某一個(gè)文件的絕對路徑可能是:
c:\pythonworkspace\firstpy.py
在Unix平臺上竭翠,文件的絕對路徑可能是: /home/sherlockblaze/Documents/pythonworkspace/firstpy.py

文件類型

文件大概可以分為文本文件和二進(jìn)制文件振坚。在不同操作系統(tǒng)下,可以用文本編輯器編輯的文件斋扰,都稱為文本文件屡拨,那么其他的文件就屬于二進(jìn)制文件。而二進(jìn)制文件相比與文本文件的優(yōu)勢在于二進(jìn)制文件的處理效率更高一些褥实。

讀取文件的開始

讀取一個(gè)文件的思路永遠(yuǎn)都是相同的呀狼,第一步自然就是打開一個(gè)文件。在python中我們通過如下代碼使用open函數(shù)來打開一個(gè)文件损离。

    input = open(filepath,mode)

我們的mode主要由以下幾種方式哥艇。

模式|作用
----|----
r|讀取模式
w|寫入模式
a|追加模式
rb|讀取二進(jìn)制數(shù)據(jù)模式打開文件
wb|寫入二進(jìn)制數(shù)據(jù)模式打開文件

同樣我們有兩種途徑來打開文件。

  • 通過絕對路徑
    input = open("/Users/sherlockblaze/Documents/pythonworkspace/Test.txt","r")
  • 通過相對路徑(需要注意的是僻澎,我們通過相對路徑是可以打開當(dāng)前工作目錄下的文件的貌踏,也就是說如果我的.py文件存在 /User/sherlock/Documents 下的話,我們通過相對路徑打開的文件也同樣存在當(dāng)前路徑下)
    input = open("Test.txt","r")
注意

在Windows下我們通過絕對路徑來打開文件的時(shí)候窟勃,我們需要在絕對文件名前加上一個(gè) r 前綴祖乳,來表示這個(gè)字符串是一個(gè)行字符串,這樣可以讓python解釋器將文件中的反斜線理解成字面意義上的反斜線秉氧。例如:

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

如果我們不添加 r 作為前綴眷昆,則需要用轉(zhuǎn)義字符把上面的語句修改成如下所示:

    input = open("d:\\pythonworkspace\\Test.txt","r")
向文件中寫入數(shù)據(jù)

我們首先通過寫入的方式打開文件,然后通過調(diào)用write方法,向文件中寫入數(shù)據(jù)亚斋。

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

通過這種方式作媚,我們往當(dāng)前目錄下的 Test.txt 文件中寫入了 SherlockBlaze is the most handsome guy! 這句話,并且需要注意的是帅刊,我們在寫完文件后纸泡,調(diào)用close()方法關(guān)閉了文件流。

常見小特性

當(dāng)使用w模式打開一個(gè)文件時(shí)赖瞒,如果文件不存在女揭,open函數(shù)就會創(chuàng)建一個(gè)新文件,如果該文件存在栏饮,那么這個(gè)文件里的內(nèi)容會被心的內(nèi)容覆蓋田绑。當(dāng)我們用讀/寫模式打開文件的時(shí)候,文件內(nèi)部會添加一個(gè)叫做文件指針的特殊標(biāo)記抡爹,文件的讀寫操作都發(fā)生在指針當(dāng)前位置上掩驱。

判斷文件是否存在

為了避免誤操作,我們可以通過os.path模塊中的isFile函數(shù)來判斷一個(gè)文件是否存在冬竟。即:

import os.path
is os.paht.isfile("Test.txt"):
    print("Test.txt exists")
else:
    print("Test.txt doesn't exists")
簡單小程序

輸入文件路徑欧穴,并且從中計(jì)算各個(gè)字母出現(xiàn)的次數(shù)

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()

思路簡單敘述:首先創(chuàng)建數(shù)組,每當(dāng)讀取到一個(gè)字符泵殴,對對應(yīng)位置的數(shù)字進(jìn)行加一涮帘,最后在進(jìn)行遍歷得到輸出。

下載網(wǎng)站源代碼笑诅,然后寫入目的文件中

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()

比如我輸入網(wǎng)址 http://www.game2.cn/调缨,在輸入目的文件:game2.txt。即可進(jìn)行下載并把對應(yīng)html輸入到當(dāng)前工作目錄的game2.txt文件中吆你。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弦叶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子妇多,更是在濱河造成了極大的恐慌伤哺,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件者祖,死亡現(xiàn)場離奇詭異立莉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)七问,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蜓耻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人械巡,你說我怎么就攤上這事刹淌∪氖希” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵芦鳍,是天一觀的道長嚷往。 經(jīng)常有香客問我葛账,道長柠衅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任籍琳,我火速辦了婚禮菲宴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趋急。我一直安慰自己喝峦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布呜达。 她就那樣靜靜地躺著谣蠢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查近。 梳的紋絲不亂的頭發(fā)上眉踱,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音霜威,去河邊找鬼谈喳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛戈泼,可吹牛的內(nèi)容都是我干的婿禽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼大猛,長吁一口氣:“原來是場噩夢啊……” “哼扭倾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挽绩,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吆录,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后琼牧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恢筝,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年巨坊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撬槽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趾撵,死狀恐怖侄柔,靈堂內(nèi)的尸體忽然破棺而出共啃,到底是詐尸還是另有隱情,我是刑警寧澤暂题,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布移剪,位于F島的核電站,受9級特大地震影響薪者,放射性物質(zhì)發(fā)生泄漏纵苛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一言津、第九天 我趴在偏房一處隱蔽的房頂上張望攻人。 院中可真熱鬧,春花似錦悬槽、人聲如沸怀吻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓬坡。三九已至,卻和暖如春磅叛,著一層夾襖步出監(jiān)牢的瞬間屑咳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工宪躯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乔宿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓访雪,卻偏偏與公主長得像详瑞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子臣缀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理坝橡,服務(wù)發(fā)現(xiàn),斷路器精置,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言赖阻,發(fā)作 oo-boon-too 的音蝶押。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,282評論 9 467
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,168評論 2 33
  • 語言中對文件進(jìn)行操作必須首先打開文件,打開文件主要涉及到fopen函數(shù)火欧。fopen函數(shù)的原型為 FILE* fop...
    朱森閱讀 802評論 0 1
  • 基于字符讀寫 最基本的文件操作當(dāng)然就是在文件中讀寫數(shù)據(jù)棋电。這也是很容易掌握的【ソ兀現(xiàn)在打開一個(gè)文件以進(jìn)行寫操作: 1. ...
    IT小白1002閱讀 1,024評論 0 1