免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
4招小技巧,帶你迅速提升Python文件處理的逼格

這是菜鳥學(xué)python的第31篇原創(chuàng)文章

閱讀本文大概需要6分鐘

文件這塊知識已經(jīng)講了好幾篇,

  • 第一篇是2個小例子入門

  • 第二篇是文件語法和場景的一個總覽

  • 第三篇是一個綜合小例子實戰(zhàn)一下,可以融合前面所學(xué)的知識

  • 這一篇算是收尾吧,回憶我以前寫過的python程序,我覺得python文件處理有這么幾個模塊非常重要,但是一般沒有人告訴你,學(xué)會這幾招后,讓你的工作會更方便更實用一些.

其實我最開始學(xué)的時候壓根沒有人告訴我這幾招,后來工作中寫代碼多了,看了一些別人的開源代碼,才發(fā)現(xiàn)哇有這么好的模塊,真是相見恨晚啊!!

所以分享給大家,可以讓初學(xué)者少走彎路.也許哪一天你工作中用到這塊,可以翻開我的文章看一下~~

1.如何對多個文件中的內(nèi)容替換

假設(shè)在當(dāng)前目錄下有2個文件 test01.txt,test02.txt

我們需要把里面的Java全部替換為Python,一次搞定怎么做呢?

|--test01.txt---

Hi All,

What Is Java?

What Is Programming?

|--test02.txt---

Hi All,

Why do people use Java?

It’s an important tool to learn

Python標(biāo)準(zhǔn)庫里面有一個很強大的模塊fileinput ,fileinput 模塊允許你循環(huán)一個或多個文本文件的內(nèi)容,非常實用

#!/usr/bin/env python

import fileinput 

import glob

#利用glob模塊過濾出當(dāng)前目錄下所有的txt文件

#inplace=1 標(biāo)準(zhǔn)輸出,比如print會被重定向到打開文件

#把每一行去掉回車,然后把java替換為Python

for line in fileinput.input(glob.glob('*.txt'),inplace=1):

    print line.strip().replace('Java','Python')

fileinput.close()#關(guān)閉文件句柄

>>

|--test01.txt---

Hi All,

What Is Python?

What Is Programming?

|--test02.txt---

Hi All,

Why do people use Python?

it’s an important tool to learn

是不是很方便,假如你在批處理郵件,有1000封郵件,你希望把里面的標(biāo)題改掉,這招是不是很爽.

2.如何列出全目錄結(jié)構(gòu)

有的時候我們想列出當(dāng)前目錄下所有文件和子目錄,有沒有直接的方法

不需要用遞歸去處理,有python內(nèi)置的os.walk()函數(shù),一招搞定,是不是很貼心

假如我們有這樣的一個目錄結(jié)構(gòu)為'C:\myPython',結(jié)構(gòu)如下:

|---demo---

|--demo_01.exe    

|--demo_02.msi    

|--other

|--info.docc  

|---log-----

|--1110_log.txt  

|--1111_log.txt  

|--1112_log.txt  

|---pic-----

|--0127_1.jpg    

|--0127_2.jpg    

|--0127_3.jpg    

#!/usr/bin/env python

import os

path=r'C:\myPython'

for folderName,subfolders,filenames in os.walk(path):

    print 'The current folder is :'+folderName

    for subfolder in subfolders:#列出子目錄

        print ('Subfolder of '+folderName+': '+subfolder)

    for file_name in filenames:#列出文件

        print ('File insdie '+folderName+': '+file_name)

>>

The current folder is :C:\myPython

Subfolder of C:\myPython: demo

Subfolder of C:\myPython: log

Subfolder of C:\myPython: pic

The current folder is :C:\myPython\demo

Subfolder of C:\myPython\demo: other

File insdie C:\myPython\demo: demo_01.exe

File insdie C:\myPython\demo: demo_02.msi

The current folder is :C:\myPython\demo\other

File insdie C:\myPython\demo\other: info.docx

The current folder is :C:\myPython\log

File insdie C:\myPython\log: 1110_log.txt

File insdie C:\myPython\log: 1111_log.txt

File insdie C:\myPython\log: 1112_log.txt

The current folder is :C:\myPython\pic

File insdie C:\myPython\pic: 0127_1.jpg

File insdie C:\myPython\pic: 0127_2.jpg

File insdie C:\myPython\pic: 0127_3.jpg

3.如何把多個文件copy到另外一個目錄下

有的時候我們需要把一個或者多個文件備份到另外一個目錄下,有沒有啥辦法,簡單快捷搞定.有的,python提供了一個高級文件模塊叫shutil,可以輕松搞定.

假如我們當(dāng)前目錄下有這樣一個文件結(jié)構(gòu):

|---backup---

|--abc.txt

|---test01.txt---

|---test02.txt---

問題:

我們想把test01.txt和text02.txt備份到backup下,怎么辦

解決:

5行代碼搞定

#!/usr/bin/env python

#列出所有的文件

#過濾出txt文件

#copy到backup下

import shutil,os

for file in os.listdir('.'):

    if os.path.splitext(file)[1]=='.txt':

        shutil.copy(file,os.path.join('backup',file))

也許有同學(xué)說怎么拷貝目錄,也有現(xiàn)成的模塊

shutil.copytree('backup', 'backup2')

創(chuàng)建了backup2目錄,然后把backup下的文件全部都copy過來

4.刪除目錄以及所有子目錄的文件

很多時候特別是我們要清空一個目錄的時候,若這個目錄下面有文件,或者不為空,直接用os.rmdir('backup2'),會報錯,告訴你:The directory is not empty: 'backup2'

捉急啊,怎么辦呢:

shutil.rmtree('backup2')backup2目錄就全部刪掉了

細心的同學(xué)會發(fā)現(xiàn)我的源碼上面為啥要加上'#!/usr/bin/env python',因為我的源碼都是在win編譯執(zhí)行的,有同學(xué)反映這樣在linux,mac上運行會報錯,確實會有這個問題:

  • 很多小白剛開始學(xué)的時候,都會原封不動的把源碼拿過來執(zhí)行(我當(dāng)時學(xué)的時候也是這樣的)也許老鳥或者有經(jīng)驗的同學(xué)一看,哦這個問題啊,原來是沒有引入python解釋器的路徑

  • 但是對新手來說,可能會花很多時間去debug,去查找問題.

  • 所以我決定寧可我麻煩一點,每一段都加上這個頭,也要保證新手能準(zhǔn)確無誤的運行我的代碼,有的時候確實要換位思考一下小白用戶的感受.也許你多花幾秒鐘多寫幾行,卻可以幫助新手,幫助別人節(jié)省好多時間,少走很多彎路.


好了文件擴展模塊小技巧就講到這里啦,希望能給初學(xué)者一些啟發(fā),若有什么不懂的,也可以留言跟我探討交流.

最后說一下,原創(chuàng)真的不易,希望大家能夠給點支持,歡迎轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)轉(zhuǎn)發(fā),留言留言留言,重要的事情說三遍,也是對我的一點鼓勵和動力.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
獨家干貨2,融合多個技巧的Python文件-綜合實戰(zhàn)應(yīng)用
Python文件夾與文件的操作
python對文件 文件夾的操作
grep和sed配合替換文件中的字串
Linux 下 查找某文件
什么是pyc文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服