gpt4 book ai didi

python - 当我尝试使用 subprocess.call 时,导致 "AttributeError: ' tuple' object has no attribute 'rfind' 的原因是什么

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:02 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数将从给定路径遍历一系列子文件夹,并解压缩其中以 .fastq.gz 结尾的所有文件,而不会影响其他文件。

我知道还有其他方法可以解决此问题,但稍后在我的程序中,依赖相同原理的一些更复杂的代码会出现相同的错误消息,我认为这会更好示例。

def unzipdir(path):#walks through folders in the listed path and unzips files
for root, dirs, files in os.walk(path):
for name in files:
if name.endswith((".fastq.gz")):
filepath = os.path.join(root, name)
x = "gzip ", "-d ", "{kwarg}".format(kwarg=filepath)
print([x])
subprocess.call([x])
subprocess.call("exit 1", shell=True)

错误消息...

$ ./test.py
[('gzip ', '-d ', '/nobackup/example/working/examplefile.fastq.gz')]
Traceback (most recent call last):
File "./test.py", line 76, in <module>
unzipdir('/nobackup/example/working')
File "./test.py", line 23, in unzipdir
subprocess.call([x])
File "/usr/lib64/python2.6/subprocess.py", line 478, in call
p = Popen(*popenargs, **kwargs)
File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1238, in _execute_child
raise child_exception
AttributeError: 'tuple' object has no attribute 'rfind'

任何帮助都将不胜感激,因为我无法追踪错误的原因。

非常感谢。

最佳答案

subprocess.call 的第一个参数应该是一个可迭代的参数(列表、元组等),并且每个参数必须是一个字符串。在subprocess.call([x])中,根据上面的print,我们可以看到x是一个字符串元组;因此,您传递的是 subprocess.call 一个字符串元组列表,而不是一个可迭代的字符串。只需调用 subprocess.call(x)(或者,如果您坚持传递列表,则可调用 subprocess.call(list(x)))。

关于python - 当我尝试使用 subprocess.call 时,导致 "AttributeError: ' tuple' object has no attribute 'rfind' 的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34087546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com