2013-10-30 52 views
-3

根據這一線索:Rename .txt files to first line in file? 我想出了這個代碼:
將.txt文件重命名爲文件第一行用逗號分隔的值?

import os 
for filename in os.listdir("."): 
    if filename.endswith(".txt"): 
     base, ext = os.path.splitext(filename) 
    with open(filename, 'r') as infile: 
     newname = infile.next().rstrip() 
    newname += ext 
    os.rename(filename, newname) 

這種運作良好,但我真正需要的是名稱的整個第一行後沒有文件,但位於逗號之間的字符串後。第一行有不同的值,用逗號(csv)分隔,我需要用第二個值重命名文件,也就是第二個和第三個逗號之間出現的文本字符串。

我找到了一個csv模塊,但我不知道它是否有用或如何使用它。我發現我可以用這種方式導入它:import unicodecsv as csv以避免奇怪的人物問題。

任何幫助,將不勝感激。 感謝

回答

4

newname = infile.next().rstrip().split(",")[2] 

可能?不知道它很難從這個問題告訴

+0

感謝快速的答案,但它給了我這個'ValueError異常:I/O操作關閉文件「 –

+0

對不起,我的錯誤!,它工作得很好,非常感謝! –

0

坦克@Joran比斯利它工作得很好,現在該代碼:

import os 
for filename in os.listdir("."): 
    if filename.endswith(".csv"): 
     base, ext = os.path.splitext(filename) 
    with open(filename, 'r') as infile: 
     newname = infile.next().rstrip().split(",")[1] 
    newname += "" 
    os.rename(filename, newname) 
+0

嗯,這讓我覺得你實際上意味着第一個和第二個逗號之間,你不小心說第二個和第三個逗號? –

+0

是的!,你的權利;-) –

+1

你應該檢查喬蘭比斯利的答案是正確的。 – Kristopher

相關問題