1. 程式人生 > >python學習日記_第七天(ex16~17)

python學習日記_第七天(ex16~17)

L16讀寫檔案

1.通過賦予open() ‘w’引數來寫入內容到檔案中。

#coding:utf-8
#習題 16: 讀寫檔案
#備註:執行時遇到問題,執行完畢後發現檔案沒有被修改。找到原因是因為:
#***沒有給出txt的絕對路徑時,檔案會在當前目錄下生成,而不是我希望的L16的資料夾下。要注意。

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
#CTRL-C可以用來退出執行中的指令碼
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

#這邊用raw_input作為一箇中斷程式執行的作用。
raw_input("?")

print "Opening the file..."

#open的引數為"w","r,"a","U",用了大寫W報錯
#target = open(filename, 'W')
target = open(filename,'w')

#因為使用了open的w模式,下面的truncate命令其實是多餘的。
#因為本身就會消除原來檔案內的內容。簡化程式碼,註釋掉。
#print "Truncating the file. Goodbye!"
#target.truncate()

#讓使用者輸入三個句子
print "Now I'm going to ask you for three lines."
line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

#向檔案內寫入上面輸入的三個句子
print "I'm going to write these to the file."
#原始碼(在6行內輸出)
# target.write(line1)
# target.write("\n")
# target.write(line2)
# target.write("\n")
# target.write(line3)
# target.write("\n")

#在1行中輸出
target.write("%s\n%s\n%s\n" % (line1, line2, line3)) 

print "And finally, we close it."
target.close()

"""
加分題
1如果你覺得自己沒有弄懂的話,用我們的老辦法,在每一行之前加上註解,為自己理清思路。就算不能理清思路,你也可以知道自己究竟具體哪裡沒弄明白。
2寫一個和上一個練習類似的指令碼,使用 read 和 argv 讀取你剛才新建的檔案。
	from sys import argv
	script, filename = argv
	txt = open(filename)
	print txt.read()

3檔案中重複的地方太多了。試著用一個 target.write() 將 line1, line2, line3 打印出來,你可以使用字串、格式化字元、以及轉義字元。
	target.write("%s\n%s\n%s\n" % (line1, line2, line3)) 

4找出為什麼我們需要給 open 多賦予一個 'w' 引數。提示: open 對於檔案的寫入操作態度是安全第一,所以你只有特別指定以後,它才會進行寫入操作。
	因為預設open只能讀取不能寫入,所以要寫入必須賦予'w'引數。
"""



L17更多檔案操作

1.通過import匯入更多功能,複用現成功能,而不是浪費時間再造輪子也是寫程式很重要的一個思想。

2.首次用到exists功能。可以判斷檔案是否存在,返回一個布林值。

#coding:utf-8
#習題 17: 更多檔案操作

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)

input = open(from_file)
indata = input.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()

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

print "Alright, all done."
output.close()
input.close

"""
加分題:

1.再多讀讀和 import 相關的材料,將 python 執行起來,試試這一條命令。試著看看自己能不能摸出點門道,當然了,即使弄不明白也沒關係。
	*模組和包的參考文件:http://wiki.woodpecker.org.cn/moin/PythonEssentialRef8
	import當然是用來引入各種模組、包,從而使用其中包含的方法,定義的資料等。具體等日後豐富。

2.這個指令碼 實在是 有點煩人。沒必要在拷貝之前問一遍把,沒必要在螢幕上輸出那麼多東西。試著刪掉指令碼的一些功能,讓它使用起來更加友好。
	見最後自己寫的東西。

3.看看你能把這個指令碼改多短,我可以把它寫成一行。
	一行= =,input.close就一行了吧。。。試試看
	不算import行,引數定義行和關閉檔案行,的確一行就夠了的說:
	***********
	from sys import argv
	script, from_file, to_file = argv
        open(to_file, 'w').write(open(from_file).read())
	***********

4.我使用了一個叫 cat 的東西,這個古老的命令的用處是將兩個檔案“連線(con*cat*enate)”到一起,不過實際上它最大的用途是列印檔案內容到螢幕上。你可以通過 man cat 命令瞭解到更多資訊。
5.使用 Windows 的同學,你們可以給自己找一個 cat 的替代品。關於 man 的東西就別想太多了,Windows 下沒這個命令。
	對Win滿滿的惡意=。=~~powershell下可以使用get-content [-Path]來讀取txt檔案

6.找出為什麼你需要在程式碼中寫 output.close() 。
	為了回收資源。

"""

"""
自己寫的能夠實現從txt1複製到txt2功能的程式碼:
from sys import argv
script, from_file, to_file = argv

txt = open(from_file)
target = open(to_file, 'w')
target.write(txt.read())

print "over"
txt.close
target.close
print "files are closed"
"""


相關推薦

python學習日記_(ex16~17)

L16讀寫檔案 1.通過賦予open() ‘w’引數來寫入內容到檔案中。 #coding:utf-8 #習題 16: 讀寫檔案 #備註:執行時遇到問題,執行完畢後發現檔案沒有被修改。找到原因是因為: #***沒有給出txt的絕對路徑時,檔案會在當前目錄下生成,而不是我希

python學習日記_(ex14~15)

L14 提示和傳遞 1.鞏固引數和變數還有%這個字串格式化工具 2.提示符可以定義一個固定值來複用會比較方便 #coding:utf-8 from sys import argv #指令碼,使用者名稱,男主角,女主角 script, user_name, role_m

python學習之路--python面向對象編程簡介

構造函數 represent eth 賦值 nts 數據 and 面向 七天 面向對象編程 在python中,同樣是類和對象作為重要的組成部分。 而且在python中基本數據類型如int都是有封裝類的,都有自己的方法,應該是和java裏面的Integer類似吧 類包括域和方

.Net基礎篇_學習筆記__關系運算符和邏輯運算符

不能 main 運算 ram true con 是否 names 關系 1.關系運算符 包含:> < <= >= == != 以及bool類型中的true和false。 2.邏輯運算符 與 &

python學習之路--一個簡單的腳本

tro 說明 .py else zipfile rect dylib 環境 cef 現在有一個需求:把某個目錄下的文件備份到指定到另外一個目錄下,而且壓縮後文件為zip文件 # -*- coding:utf-8 -*- #! /usr/bin/python # Filena

Python學習筆記(,文件操作、函數)

input 釋放空間 打開方式 只需要 不能 解決 信息 無法查看 一個 一、文件處理   1、文件打開模式    打開文本的模式,默認添加t,需根據寫入或讀取編碼情況添加encoding參數。    r 只讀模式,默認模式,文件必須存在,不能存在則報異常。    w

python學習筆記:7 深淺拷貝

我們 spl 交集 再次 ipy section 結束 技術分享 dict 目錄 1. 基礎數據類型補充 2. set集合 3. 深淺拷貝 1. 基礎數據類型補充 (1)join方法 join方法是把一個列表中的數據進行拼接,拼接成字符串(與split方法相反,spli

python學習筆記:8 文件操作

只讀 查看 lse tex ati 使用場景 java 創建文件 存在 1. 文件操作介紹 說到操作文件我們肯定會想到流,文件的操作都是通過流來操作的。在python中文件的操作非常簡單,並不像Java等其他語言一樣有各種各樣的流操作,我們直接使用open函數即可打開一個文

學習前端的

font 真的 align 開始 開始學習 black 機器人 spa 服務 不知不覺,學習前端已經一個星期了,每天一點點,算是堅持下來,html第一遍看完,學習了簡單的標簽,為下一步學習html5,xhtml,css做好準備和鋪墊,完成第一個小項目(或許談不上)第一個小任

python學習筆記:11 閉包及迭代器

目錄 1. 函式名的使用 2. 閉包 3. 迭代器 1. 函式名的使用 其實函式名也是一個變數,但它是一個比較特殊的變數,與小括號配合可以執行函式的變數: 函式名其實和記憶體一樣,也可以使用print檢視它的記憶體地址: In[22]: def func1(): .

網路管理員學習筆記_章 網路安全_002_概述

一 .  網路安全基本概念 (1) 網路安全就是通過一組規則約束網路活動。 (2) 網路安全的5個基本要素:機密性,完整性,可用性,可控性,可審查性 (3)網路安全威脅的五個主要表現:         a.  非授權訪問。

網路管理員學習筆記_章 網路安全_002_防火牆技術

1. 防火牆簡介    a.  防火牆位於兩個不同信任度網路之間,負責進行通訊控制,強制實施統一的安全策略,防止對重要資訊資源的非法行為。    b.  防火牆可以是軟甲也可以是硬體裝置,或者兩者的組合。   &nbs

python學習筆記:12 列表推導式和生成器

目錄 1. 迭代器 2. 推導式 1. 迭代器 什麼是生成器呢,其實生成器的本質就是迭代器;在python中有3中方式來獲取生成器(這裡主要介紹前面2種) 通過生成器函式獲取 通過各種推導式來實現生成器 生成器函式 我們來看一個普通的函式: In[2]: def fu

python學習筆記:12 列表推導式和生成器

clas traceback 括號 module recent else 接收 工作 last 目錄 1. 叠代器 2. 推導式 1. 叠代器 什麽是生成器呢,其實生成器的本質就是叠代器;在python中有3中方式來獲取生成器(這裏主要介紹前面2種) 通過生成器函數獲

java學習之路-------

今天我們講到了面向物件: 面向物件的三大特徵:繼承,封裝,多型 面向過程:凡事都得親力親為 面向物件:不是所有的事都自己幹,由事物的執行者變成指揮者   類、引用、物件 類  引用 = new 物件 Random r = new Random();

python學習筆記:18 面向物件04-反射

目錄 issubclass和isinstance 區分函式和方法 反射 issubclass和isinstance issubclass:可以判斷一個類是否另一個類的子類。 # issubclass class A: pass class B(A): p

python學習筆記:21 常用內建模組-1

目錄 一、collections模組 二、時間模組 也可以在我的個人部落格上閱讀 一、collections模組 1. Counter Counter是⼀個計數器,主要⽤統計字元的數量,之前如果我們要統計字串的話要寫如下演算法: s = 'Wed Nov 14 08:58:45 CS

學習Linux課程

昨天晚上有事沒參加課程,今天一早就起來看錄播視訊@[email protected],先來總結一下早上學的知識 一、檔案特殊許可權 1、SUID:讓命令的執行者臨時獲取到所有者的身份 chmod  u+s  檔名 2、SGID:讓目錄中新的檔案的所有組歸屬上級目錄 ch

python學習筆記】6

繼續今天的python學習 昨天學到用multiprocessing模組中的Process類建立程序,那麼今天學會建立一個Process的子類來建立一個程序 from multiprocessing import Process import time class My

python學習筆記】8

繼續今天的python學習 昨天我們說到了多執行緒共享資料(全域性變數),那麼今天我們就緊接著來說一下多執行緒不共享資料的使用方式 import threading import time def test1(): the_number = 0 for i