Python函数接受字符串,但不接受在变量内的字符串



我有以下代码(它改变了字符串/文件路径,替换了文件名末尾的数字+文件扩展名,并将其替换为"@. ex")我希望我的问题能在下面重现。

我这样做是因为文件名可以用各种方式输入,例如:r_frame.003。Exr(但也)r_12_frame.03.exr等。

import pyseq
import re
#create render sequence list
selected_file = 'H:/test/r_frame1.exr'
without_extention = selected_file.replace(".exr", "") 
my_regex_pattern =  r"d+b"
sequence_name_with_replaced_number = re.sub(my_regex_pattern, "@.exr" ,without_extention)
mijn_sequences = fileseq.findSequencesOnDisk(sequence_name_with_replaced_number)

如果我打印&;sequence_name_with_replaced_number&;值,这将导致控制台:H:/测试/r_frame@.exr '

当我像这样在函数中使用这个变量时:

mijn_sequences = fileseq.findSequencesOnDisk(sequence_name_with_replaced_number)

那么它不工作。

但是当我手动将最后一行替换为:

mijn_sequences = fileseq.findSequencesOnDisk('H:/test/r_frame@.exr')

那么它工作得很好。(这似乎是相同的值/字符串)但这不是一个可行的选择,代码的全部意义在于让计算机在数千帧内这样做。

有人知道这可能是什么原因吗?我已经尝试用str()将变量重新转换为字符串。我尝试了其他方法,比如使用f-string,我不确定如何将其转换为原始字符串,因为变量已经存在。

之后,我将执行简单的for循环,遍历该序列中的所有文件。我做这个工作流程的原因是删除。exr文件扩展名之前的数字,并用@符号代替它们。(但忽略所有不在文件名末尾的数字,因此上面的正则表达式。同样,sequence_name_with_replaced_number"变量在控制台中似乎没问题。它吐出:'H:/test/r_frame@.exr'(这是我需要的)

修复!问题是正确的,每次我从控制台上的变量值进行剪切并将其视为手动输入时,它都会起作用。

然后我对两个值执行len(),结果相差2!发生了什么?控制台添加了">
",但在生成的变量中,它将这些添加为额外的字母。我通过添加来修复它Cleaned_sequence = sequence_name_with_replaced_number[1:-1]所以"H:/测试/r_frame1。(控制台显示给我)与"H:/test/r_frame1"不同。exr'(我手动插入的,因为我添加了这些标记,在控制台中会自动显示)

最新更新