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')

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

有人知道这可能是什么原因吗?

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

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

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

相关内容

  • 没有找到相关文章

最新更新