2013-01-17 35 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