如何提取python脚本读取和写入的文件名而不执行脚本本身?

时间:2013-12-17 23:24:48

标签: python eval static-analysis

我想分析一组python文件。这些文件来自同一个项目,它们读取文件并写入文件。现在某些文件只能在运行其他文件后运行,因为它将前一个文件的输出作为输入。我想想象一下依赖性。为此,我想从给定文件中提取输入文件名和输出文件名,而不执行文件本身。如何最好地完成这项任务?

更具体:

我的python文件包含以下语句:

base_dir = os.path.join('/bla/bla/infiles') 
in_file  = open(os.path.join(base_dir, 'input.json'))
out_file = open(os.path.join(base_dir, 'output.json'), 'w')

我需要扫描文件并仅获取这些变量(似乎是文件名的变量)并打印出评估值。

谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您只需导入相关文件,然后读出变量即可。

将所有功能放在一个函数中,以确保没有运行任何内容并使用

__main__ 

指令能够从shell执行

import os
import sys

base_dir = os.path.join('/bla/bla/infiles')

def hest(args*):
    print args

if __name__ == "__main__":
    hest(sys.argv)

如果从其他python脚本导入上述内容,则可以访问base_dir,但不运行该函数。如果从shell运行脚本,则会运行。

为了让它更漂亮,你应该将它包装在我认为的课程中。

答案 1 :(得分:0)

只需打开文件阅读:

with open("file.ext", "r") as ifile:
    data = ifile.read()

然后编写正则表达式或任何您喜欢的文件名。