2010-01-06 60 views
5

我想刪除幾個文件,它們在開始時名稱相同,但版本號不同。有誰知道如何使用他們的名字開頭刪除文件?刪除以名字開頭的文件Python

Eg. 
version_1.1 
version_1.2 

有沒有一種方法可以刪除任何以名稱版本開頭的文件?

謝謝

+0

所以你想刪除匹配'version_1。*'的文件嗎? –

回答

13
import os, glob 
for filename in glob.glob("mypath/version*"): 
    os.remove(filename) 

替代正確的路徑(或.(=當前目錄))爲mypath。並確保你沒有得到錯誤的路徑:)

這將引發一個異常,如果一個文件當前正在使用。

+2

只在Windows上引發異常。刪除文件在Unices上有點不同。 – gnud

3

在哪種語言?

在bash(的Linux/Unix),你可以使用:

rm version* 

或批量(在Windows/DOS),你可以使用:

del version* 

如果你想要寫的東西要做到這一點在Python中它會相當簡單 - 只需查看正則表達式的文檔即可。

編輯: 僅供參考,這是如何做到這一點在Perl:

opendir (folder, "./") || die ("Cannot open directory!"); 
@files = readdir (folder); 
closedir (folder); 

unlink foreach (grep /^version/, @files); 
4

如果您確實想使用Python,您可以使用os.listdir()的組合,該組合返回特定目錄中所有文件的列表,以及os.remove()

即:

my_dir = # enter the dir name 
for fname in os.listdir(my_dir): 
    if fname.startswith("version"): 
     os.remove(os.path.join(my_dir, fname)) 

然而,正如其他的答案中指出,你真的不必使用Python這一點,外殼可能本身就支持這樣的操作。

+0

沒有太多文件的時候很好! –

1
import os 
os.chdir("/home/path") 
for file in os.listdir("."): 
    if os.path.isfile(file) and file.startswith("version"): 
     try: 
       os.remove(file) 
     except Exception,e: 
       print e