2013-01-17 39 views
0

我有一個約1000行的txt文件,我想設置colum 1作爲soruce目標,第2列作爲傳輸到目標,並使用shutil.copyfile(src, dst)複製這些文件。python設置列作爲值

我把它設置爲一個簡單的打印(src,dst),現在我可以看到發生了什麼。我在for src in vld中沒有正確地添加linux值。

我是否用這個當前設置取消src值與dst的相應值對齊?我使用Python 2.4

import csv 
import operator 
import sys 
import os 
import shutil 

inf = csv.reader(open('data.txt','r')) 
sortedlist = sorted(inf, key=operator.itemgetter(2), reverse=True) 
def dothis(x): 
     for row in sortedlist: 
       print row[x] 

vld = dothis(0) 
linux = dothis(1) 

for src in vld: 
     dst = linux 
     print (src, dst) 

當前的錯誤消息:

Traceback (most recent call last): File "test.py", line 16, in ? for src in vld: 
TypeError: iteration over non-sequence 
+0

當前錯誤消息:「Traceback(最近調用最後一次): 文件」test.py「,第16行,在? for src in vld: TypeError:對非序列的迭代 ' – user1943219

回答

2

你幾乎擁有了,但是偏出軌道的某個地方。 :) dothis不返回任何東西,所以vldlinux都將是空的。

csv.reader已經爲您排列了值;它一次產生行。當你沒有必要的時候,你實際上把它們分開了。

inf = csv.reader(open('data.txt','r')) 
sortedlist = sorted(inf, key=operator.itemgetter(2), reverse=True) 

for row in sortedlist: 
    src = row[0] 
    dst = row[1] 
    print src, dst 
+0

'Traceback(最近調用最後一個): 文件「test.py」,第18行,在?對於src, :排序列表中的dst: ValueError:解包的值太多 src和dst的值是如何定義的? dothis函數允許我顯示一行,在我的情況下指定0,1或2. – user1943219

+0

啊,文件中是否有兩列以上?我假設只有一個源列和一個目標列,並且它們依次成爲'src,dst'。我會編輯 – Eevee

+0

現在我明白了,vld只在我給它的第1行工作,所以它無法正確添加這兩個。謝謝! – user1943219