在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ exercise17.更多文件操作
附錄 A-練習(xí) 9:生成一個(gè)空文件(Touch, New-Item)
附錄 A-練習(xí) 10:復(fù)制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習(xí) 14:刪除文件 (rm)
附錄 A-練習(xí) 11:移動(dòng)文件 (mv)
exercise46.項(xiàng)目骨架
附錄 A-練習(xí) 3:如果你迷路了
exercise37.復(fù)習(xí)符號(hào)
exercise47.自動(dòng)化測(cè)試
exercise3.數(shù)字和數(shù)學(xué)計(jì)算
附錄 A-練習(xí) 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對(duì)象、類(lèi)、以及從屬關(guān)系
exercise48.更復(fù)雜的用戶(hù)輸入
下一步
簡(jiǎn)介
附錄 A-練習(xí) 7:刪除路徑 (rmdir)
exercise49.寫(xiě)代碼語(yǔ)句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類(lèi)和對(duì)象
附錄 A-練習(xí) 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達(dá)式
附錄 A-練習(xí) 4:創(chuàng)建一個(gè)路徑 (mkdir)
附錄 A-練習(xí) 15:退出命令行 (exit)
exercise25. 更多更多的練習(xí)
exercise6.字符串和文本
exercise2.注釋和井號(hào)“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個(gè)程序
exercise23. 閱讀代碼
附錄 A-練習(xí) 5:改變當(dāng)前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習(xí)
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學(xué)到了什么?
exercise41.學(xué)會(huì)說(shuō)面向?qū)ο?/span>
exercise52.開(kāi)始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來(lái)制作一個(gè)游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進(jìn)行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語(yǔ)句
exercise36.設(shè)計(jì)和調(diào)試
exercise0.安裝和準(zhǔn)備
exercise50.你的第一個(gè)網(wǎng)站
附錄 A-練習(xí) 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習(xí) 6:列出當(dāng)前路徑 (ls)
exercise16.讀寫(xiě)文件
exercise4.變量和命名
exercise34.訪(fǎng)問(wèn)列表元素
exercise11.提問(wèn)
exercise43.基本的面向?qū)ο蟮姆治龊驮O(shè)計(jì)
附錄 A-簡(jiǎn)介
附錄 A-練習(xí) 8:目錄切換(pushd, popd)
來(lái)自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打印(輸出)
附錄 A-練習(xí) 13:輸出文件 (cat)
exercise39.字典,可愛(ài)的字典

exercise17.更多文件操作

現(xiàn)在讓我們?cè)賹W(xué)習(xí)幾種文件操作。我們將編寫(xiě)一個(gè) Python 腳本,將一個(gè)文件中的內(nèi)容拷貝到另外一個(gè)文件中。這個(gè)腳本很短,不過(guò)它會(huì)讓你對(duì)于文件操作有更多的了解。

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print "Copying from %s to %s" % (from_file, to_file)

# we could do these two on one line, how?
in_file = open(from_file)
indata = in_file.read()

print "The input file is %d bytes long" % len(indata)

print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to continue, CTRL-C to abort."
raw_input()

out_file = open(to_file, 'w')
out_file.write(indata)

print "Alright, all done."

out_file.close()
in_file.close()

你應(yīng)該很快注意到了我們 import 了又一個(gè)很好用的命令 exists。這個(gè)命令將文件名字符串作為參數(shù),如果文件存在的話(huà),它將返回 True,否則將返回 False。在本書(shū)的下半部分,我們將使用這個(gè)函數(shù)做很多的事情,不過(guò)現(xiàn)在你應(yīng)該學(xué)會(huì)怎樣通過(guò) import 調(diào)用它.

通過(guò)使用 import,你可以在自己代碼中直接使用其他更厲害的(通常是這樣,不過(guò)也不 盡然)程序員寫(xiě)的大量免費(fèi)代碼,這樣你就不需要重寫(xiě)一遍了。

你看到的結(jié)果

和你前面寫(xiě)的腳本一樣,運(yùn)行該腳本需要兩個(gè)參數(shù),一個(gè)是待拷貝的文件,一個(gè)是要拷貝至的文件。我再創(chuàng)建一個(gè)名為 test.txt 的測(cè)試文件,我們將看到如下的結(jié)果:

$ echo "This is a test file." > test.txt

$ cat test.txt This is a test file. $ $ python ex17.py test.txt new_file.txt Copying from test.txt to new_file.txt The input file is 21 bytes long Does the output file exist? False Ready, hit RETURN to continue, CTRL-C to abort.

Alright, all done.

該命令對(duì)于任何文件都應(yīng)該是有效的。試試操作一些別的文件看看結(jié)果。不過(guò)小心別把你的重要文件給弄壞了。

Warning: 你看到我用 echo 命令創(chuàng)建一個(gè)文件,并用 cat 命令展示一個(gè)文件了吧?它們只能在 Linux 和 OSX 下使用,你可以閱讀附錄 A 獲得者兩個(gè)命令的使用方法。

附加題

1.這個(gè)腳本 實(shí)在是有點(diǎn)煩人。沒(méi)必要在拷貝之前問(wèn)一遍把,沒(méi)必要在屏幕上輸出那么多東西。試著刪掉腳本的一些功能,讓它使用起來(lái)更加友好。 2.看看你能把這個(gè)腳本改多短,我可以把它寫(xiě)成一行。 3.我使用了一個(gè)叫 cat 的東西,這個(gè)古老的命令的用處是將兩個(gè)文件“連接(concatenate)”到一起,不過(guò)實(shí)際上它最大的用途是打印文件內(nèi)容到屏幕上。你可以通過(guò) man cat 命令了解到更多信息。(windows 下沒(méi)有這個(gè)命令) 4.找出為什么你需要在代碼中寫(xiě) output.close() 。 5.再多讀讀和 import 相關(guān)的材料,將 python 運(yùn)行起來(lái),試試這一條命令。試著看看自己能不能摸出點(diǎn)門(mén)道,當(dāng)然了,即使弄不明白也沒(méi)關(guān)系。

常見(jiàn)問(wèn)題

Q: 為什么'w'要寫(xiě)在引號(hào)里?

它只是個(gè)字符串,你已經(jīng)做過(guò)太多關(guān)于字符串的練習(xí)了,你知道什么是字符串的,對(duì)嗎?

Q:總是感覺(jué)這些練習(xí)很難,這正常嗎?

這很正常的。直到你做完練習(xí) 36 甚至完成這本書(shū)的學(xué)習(xí),用 python 做出一些作品,編程對(duì)你來(lái)說(shuō)可能都不是一件簡(jiǎn)單的事情。每個(gè)人都不一樣,所以只要堅(jiān)持復(fù)習(xí)你認(rèn)為困難的習(xí)題,直到你真的搞明白它們,要有耐心。

Q:函數(shù) len()是干什么用的?

它能獲得參數(shù)的長(zhǎng)度,返回值是一個(gè)數(shù)字,你試著用用這個(gè)方法。

Q:我嘗試改短代碼的時(shí)候,在腳本的結(jié)尾處遇到一個(gè)關(guān)于文件關(guān)閉的問(wèn)題。

你可能做了一些類(lèi)似這樣的事情,比如 indata = open(from_file).read(),這樣寫(xiě)的話(huà),就不需要在執(zhí)行關(guān)閉操作,當(dāng)執(zhí)行完這一行的時(shí)候,文件自動(dòng)就被關(guān)閉了。

Q: 我遇到一個(gè)異常 Syntax:EOL while scanning string literal

你應(yīng)該是忘記在字符串的結(jié)尾加上引號(hào)了,回到你出錯(cuò)的那行代碼,檢查一下。