繁体   English   中英

Python:AttributeError:'int'对象没有属性'replace'

[英]Python: AttributeError: 'int' object has no attribute 'replace'

我是python的新手,在我的第一个程序中,我试图从FLAC文件中提取元数据以对其进行重命名。

我代码的这一特殊部分给我带来了一些麻烦:

import subprocess

filename = raw_input("Path?")

title = subprocess.call(
     ["metaflac", "--show-tag=title", filename])
new_title = title.replace("TITLE=", "")

print new_title

“ metaflac --show-tag = title file.flac”发回“ TITLE = foo”,而我试图摆脱“ TITLE =”。

问题是,当我运行它时,我得到了以下信息:

TITLE=foo
Traceback (most recent call last):
   File "test.py", line 16, in <module>
     title = title.replace("TITLE=", "")
 AttributeError: 'int' object has no attribute 'replace'

我只是不明白字符串“ TITLE =Débutd'la Fin”怎么可能是整数?

subprocess.call返回一个整数(退出代码),而不是输出。

使用stdout参数,并调用Popen.communicate()

pipe = subprocess.Popen(
     ["metaflac", "--show-tag=title", filename], stdout=subprocess.PIPE)
title, error = pipe.communicate()

该输出大概来自您的子流程。

subprocess.call返回返回代码,而不是标准输出上的输出。

subprocess.call返回进程的退出代码,而不是输出。 为了获得输出,您需要传递参数stdout的值( 根据文档 ,该值可以是PIPE,现有文件描述符(正整数),现有文件对象和无)。

此线程具有有关替代方法(最好是IMO)的更多信息,以完成此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM