python中文件的處理和列表切片的一點理解
今天上完課就一直在搗鼓python的文件處理問題,現在已經11點了(這幾天都沒有去陪我女朋友在這裡跟她說聲抱歉),給大家做一點分享。
不知道大家對python中的文件處理是怎麼想的,給大家看一串代碼:
In [4]: f=open(rC:Users13016Desktoppythona.txt,a+)In [5]: f.read()Out[5]: In [6]: f.tell()Out[6]: 112In [7]: f.seek(0,0)Out[7]: 0In [8]: f.read()Out[8]: 你好
世界
這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎
哈哈哈哈
我是一個小畫家
你是一個小畫家In [9]: f.tell()Out[9]: 112In [10]: f.read()Out[10]:
代碼的下面是我的文本。下面給大家一行行分析:
1f=open(rC:Users13016Desktoppythona.txt,a+)
這行代碼的意思其實就是用open()方法打開我的路徑中的一個txt文件,用什麼方法打開的呢? 用的是「a+」的方法,a+的意思就是,用追加的方式在已有的文本後面追加字元串,而且+的表示,能夠使得這種寫法,也能夠進行讀取操作,但是最煩人vde一點就是,以a+的方式讀取之後,它的游標是會移動到已有字元串的最後的。大家可以看見我上面的IN【5】,它輸出的內容是「」,也就表示啥都沒有。這就是因為游標移動到最後一個字元串末尾的原因。
我們可以用tell()方法來看看現在的游標的位置,f.tell()之後大家可以看見,我現在所佔用的位元組數是112個。 大家應該知道在python中中文字元每個佔2個位元組。 不難推算我的txt文檔的最後剛好有112個位元組。 那麼怎樣將游標從最後移動到前面呢? 這時候就要用到seek這個方法。 seek(1,2) 它有兩個參數,一是參數1,表示的偏移量,一個是參數2,當參數2等於0時,為手個字元的游標,1為當前的游標,2為最後一個字元的游標。 所以f.seek(0,0),就可以將游標移到最前。此時,再進行read()。 可以看見,我文本中的內容時可以被讀取出來的。 還有一些細節問題,大家可以再下面評論。
再來看看python中的列表切片問題。還是老套路,先上代碼:
In [28]: for i in open(rC:Users13016Desktoppythona.txt): ...: print(i)你好世界這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎哈哈哈哈我是一個小畫家你是一個小畫家In [29]: i[0]Out[29]: 你In [30]: i[1]Out[30]: 是In [50]: h=f.read()In [51]: print(h)你好世界這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎哈哈哈哈我是一個小畫家你是一個小畫家In [52]: m=h.spilt()In [54]: print(m)[你好, 世界, 這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎, 哈哈哈哈, 我是一個小畫家, 你是一個小畫家]In [55]: b=
.join(m)In [56]: print(b)你好世界這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎哈哈哈哈我是一個小畫家你是一個小畫家In [57]: m[0]Out[57]: 你好In [58]: m[1]Out[58]: 世界In [59]: m[0:3]Out[59]: [你好, 世界, 這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎]In [60]: m.append("我去牛皮")In [61]: print(m)[你好, 世界, 這個文本用來測試我對列表和切片的理解,為文件的處理打好基礎, 哈哈哈哈, 我是一個小畫家, 你是一個小畫家, 我去牛皮]
上面這段代碼,能夠交給大家很多東西,下面我就稍微說一下:
- for i in 「python」 語句之後,輸入的print(i)實際上是一個str類型的,所以現在並不能對其進行切片操作,如果操作i[0],可以看見為最後一行的第一個。
- 所以為了解決這個問題,可以使用split()方法。要將它轉為列表類型要使用split()方法。
- 將list類型轉化為str類型的話使用,join()方法。
- append()可以在列表最後進行添加元素
5.extend()可以在最後添加列表
大家有不懂得就直接評論一波,很晚了,要睡了。
推薦閱讀: