2015-02-09 67 views
-1

我正在运行一个子进程,该子进程给出了子目录的路径列表。现在,我试图连接到列表中的每个成员(路径),以获得最终路径。但是,由于列表成员和字符串是不同的数据类型,我无法连接列表中的路径和另一个字符串以生成最终路径。Python:我如何连接路径列表

有人能帮助我吗?

directories = subprocess.check_output(
    ['find', '/Users/sdb99/Desktop', '-type', 'd', '-mmin', '-60', '-type', 'd','-mmin', '+5']).splitlines() 
number_of_directories = len(directories) 
n = 1 
for n in range(0,number_of_directories):     
    dire =str(directories[n]).strip('[]') 
    b_new = dire[n] + '/1' 
    print(b_new) 
+0

你的代码很混乱。你遇到了什么错误?你能举一个例子说明你的'subprocess'调用的返回值可能是什么以及你想要将它转换成什么?另外,您使用的是哪种Python版本(您已经用Python 2.7和Python 3.x这两个主要品种标记了您的问题,但它们之间存在显着差异)。 – Blckknght 2015-02-10 01:28:13

+0

只是为了说明:目录= subprocess.check_output( ['find','/ Users/sdb99/Desktop','-type','d','-mmin','-60','-type', 'd',' - mmin','+5'])。splitlines() 这一行给我一个在桌面文件夹上创建的目录路径。在列表中的每个路径后,我想添加其他字符串例如:'用户/ sdb99 /桌面/ UntitledFolder2'(这是我从列表中)+/old_files。这应该生成像这样的完整路径:'Users/sdb99/Desktop/UntitledFolder2/old_files。我无法创建这两个路径是不同的数据类型。 – learnningprogramming 2015-02-10 18:48:55

回答

1

有没有必要去除任何东西,你的逻辑是接近但有缺陷。该列表由字符串组成,所有您需要做的就是将它们分配给循环中的一个字符串。

dire = '' 
directories = subprocess.check_output(
    ['find', '/Users/sdb99/Desktop', '-type', 'd', '-mmin', '-60', '-type', 'd','-mmin', '+5']).splitlines() 
number_of_directories = len(directories) 
for n in range(0,number_of_directories): 
    dire += directories[n] 
    dire += ' ' 
print dire 
type dire 
+0

谢谢castaway2000的回复。但我得到以下错误: 回溯(最近通话最后一个): 文件 “/Users/sdb99/PycharmProjects/Scan_log_version1.1/test_pathselection.py”,10号线,在 可怕+ =目录[N ] TypeError:无法将字节对象隐式转换为str 处理完成退出代码1 – learnningprogramming 2015-02-10 17:59:16

+0

我不是100%确定这是否可以正常工作,而是试试这个:dire + = str(directories [n]) – castaway2000 2015-02-10 21:36:12

+0

或者也试试这个dire + =目录[n] .decode(“utf-8”) 但调试女巫索引可能是明智的导致这个问题。打印n并在出现错误的位置查看输出,然后可以添加条件语句来解码该索引(如果需要) – castaway2000 2015-02-10 21:40:13