【问题标题】:python input to another .py filepython输入到另一个.py文件
【发布时间】:2018-12-10 14:52:59
【问题描述】:

我在 python 中找到了一个脚本,可以在 .srt 中转换 .ttml 字幕

我应该运行它的方式是:

python script.py inputsubtitle.ttml > outputsubtitle.srt

我遇到的问题是我不能一次批量处理多个文件,如果一个文件的名称中有空格,它会简单地将其切断,如下所示:

"sub title.ttml" becomes "sub.srt"

我已经写了一些代码来替换空格:

filenames = os.listdir(newpathin)
for filename in filenames:
    os.rename(os.path.join(newpathin, filename), os.path.join(newpathout, filename.replace(' ', '_')))

我现在遇到的问题是我不明白如何将输入/输出设置为文件夹。

我应该在代码中搜索什么?里面没有“输入”功能。

【问题讨论】:

  • 您是否尝试过在您的代码中搜索raw_inputinput 关键字?
  • 寻找 sys.argv ;) 你用 argv 传递外部参数

标签: python python-3.x shell command-line command-line-arguments


【解决方案1】:

在您的脚本中,从 sys 模块中查找 argv。这就是您从外部传递参数的方式。如果您想在循环中运行该进程,您可以修改它在文件夹中的脚本及其所有内容在列表中并循环转换所有内容,或者使用 subproces.run 为您希望的所有文件调用脚本转变。

更新:sys.argv[0] 是您的脚本,sys.argv[1] 是输入,sys.argv[2] 是输出。

假设 sys.argv[1] 是输入,而 sys.argv[2] 是输出。我假设这个流程:

import sys

in_file_name = sys.argv[1]
# do transformation and write them to back
tree = ET.parse(in_file_name)
root = tree.getroot()
# more code
out_file_name = sys.argv[2]
# write transformation to this file

您可以传递文件夹路径,而不是传递文件。您需要将上面的转换转换为函数

import glob, os, sys

def transformer(in_file_name):
    # do transformation and write them to back
    tree = ET.parse(in_file_name)
    root = tree.getroot()
    # more code
    # instead of getting out_file_name from sys.argv[2] like
    #out_file_name = sys.argv[2]
    # we will generate from in_file_name 
     out_file_name = in_file_name.split('.')[0] +'.srt'

    # write transformation to this file

# let’s do that to all files in that folder
in_path_name = sys.argv[1]
os.chdir(in_path_name)
for file in glob.glob("*.ttml"):
    transformer(file)

要运行它,你只需要 python myscript.py folder_path

注意:写这篇文章纯粹是为了猜测你的脚本是什么样的;)

【讨论】:

  • 脚本使用:'filename = sys.argv[1] tree = ET.parse(filename) root = tree.getroot()'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
相关资源
最近更新 更多