Py (os.path): 有最大值吗?自动分隔线前字符串的大小 / return?
Py (os.path): is there a max. size for a string before an automated breakline / return?
我希望我能很好地描述我的问题,如果它很复杂,请提前道歉。
问题:
Python(或 os.path 调用)是否会在一定数量的字符后自动插入 return?
背景:
我尝试使用 openSMILE 工具从 .wav 文件中提取声学特征。
为此,我传递了路径的字符串(输入文件和输出文件)
通过子进程。
SMILExtract 调用有 3 个参数(-C 用于配置;-I 用于输入文件 -O 用于输出文件)。我用字符串操作准备这 3 个参数,并将参数保存在传递给子进程调用的列表中。
def extractFeatures(self,inputFile):
self.openSMILEsettings.append("-I " + inputFile)
outputFile = os.path.dirname(inputFile) + "/featuresOf_" +os.path.basename(inputFile)[0:-3] + "arff"
self.openSMILEsettings.append("-O " + outputFile)
print self.openSMILEsettings[2]
print ' '.join(self.openSMILEsettings)
# print subprocess.check_output(['SMILExtract'] + self.openSMILEsettings)
extractFeatures("/media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav")
在控制台中,打印命令 (print ' '.join(...)) 的输出看起来没问题(示例如下)
-C OSconfig/IS12_speaker_trait.conf -I /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav -O /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/featuresOf_audioFile.arff
但是,当我尝试 运行 带有子进程调用的代码时,出现异常。出于调试目的,我将打印的输出复制到文本编辑器,看起来输入了 Return,看起来像这样
-C OSconfig/IS12_speaker_trait.conf -I /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav -O /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/featur
esOf_audioFile.arff
这是自动换行,是由您的文本编辑器引起的。本质上,没有换行符,但您的编辑器无法在一行中显示文本,因为它太长了。结果,它将文本推到一个新行。
您可以在 gedit 中禁用此功能,方法是转到查看->首选项->取消选中 "Enable Text Wrapping"。
谢谢达诺。这就解释了为什么文本编辑器中有一个 return。
我同时找到了执行 SMILExtract 调用的解决方案。
我将 subprocess 调用更改为 os.system 并使用了类似 elsewhere
解释的模板
新的通话看起来像这样:
def extractFeatures(self,inputFile):
self.openSMILEsettings.append("-I " + inputFile)
outputFile = os.path.dirname(inputFile) + "/featuresOf_" +os.path.basename(inputFile)[0:-3] + "arff"
self.openSMILEsettings.append("-O " + outputFile)
cmd_template = 'SMILExtract {config_path} {wav_path} {arff_path}'
os.system(cmd_template.format(
config_path=self.openSMILEsettings[0],
wav_path=self.openSMILEsettings[1],
arff_path=self.openSMILEsettings[2],
))
现在运行顺利。使用 os.system insted of subprocess 有什么缺点吗?
我希望我能很好地描述我的问题,如果它很复杂,请提前道歉。
问题: Python(或 os.path 调用)是否会在一定数量的字符后自动插入 return?
背景: 我尝试使用 openSMILE 工具从 .wav 文件中提取声学特征。 为此,我传递了路径的字符串(输入文件和输出文件) 通过子进程。
SMILExtract 调用有 3 个参数(-C 用于配置;-I 用于输入文件 -O 用于输出文件)。我用字符串操作准备这 3 个参数,并将参数保存在传递给子进程调用的列表中。
def extractFeatures(self,inputFile):
self.openSMILEsettings.append("-I " + inputFile)
outputFile = os.path.dirname(inputFile) + "/featuresOf_" +os.path.basename(inputFile)[0:-3] + "arff"
self.openSMILEsettings.append("-O " + outputFile)
print self.openSMILEsettings[2]
print ' '.join(self.openSMILEsettings)
# print subprocess.check_output(['SMILExtract'] + self.openSMILEsettings)
extractFeatures("/media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav")
在控制台中,打印命令 (print ' '.join(...)) 的输出看起来没问题(示例如下)
-C OSconfig/IS12_speaker_trait.conf -I /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav -O /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/featuresOf_audioFile.arff
但是,当我尝试 运行 带有子进程调用的代码时,出现异常。出于调试目的,我将打印的输出复制到文本编辑器,看起来输入了 Return,看起来像这样
-C OSconfig/IS12_speaker_trait.conf -I /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/audioFile.wav -O /media/USERNAME/MountPOINT/Dir1/Dir2/Dir3/02003_SomeSesssionNumber1_and2_2323123/featur
esOf_audioFile.arff
这是自动换行,是由您的文本编辑器引起的。本质上,没有换行符,但您的编辑器无法在一行中显示文本,因为它太长了。结果,它将文本推到一个新行。
您可以在 gedit 中禁用此功能,方法是转到查看->首选项->取消选中 "Enable Text Wrapping"。
谢谢达诺。这就解释了为什么文本编辑器中有一个 return。
我同时找到了执行 SMILExtract 调用的解决方案。 我将 subprocess 调用更改为 os.system 并使用了类似 elsewhere
解释的模板新的通话看起来像这样:
def extractFeatures(self,inputFile):
self.openSMILEsettings.append("-I " + inputFile)
outputFile = os.path.dirname(inputFile) + "/featuresOf_" +os.path.basename(inputFile)[0:-3] + "arff"
self.openSMILEsettings.append("-O " + outputFile)
cmd_template = 'SMILExtract {config_path} {wav_path} {arff_path}'
os.system(cmd_template.format(
config_path=self.openSMILEsettings[0],
wav_path=self.openSMILEsettings[1],
arff_path=self.openSMILEsettings[2],
))
现在运行顺利。使用 os.system insted of subprocess 有什么缺点吗?