Python TypeError:必须是string,而不是int

时间:2018-06-08 14:22:49

标签: python

我有一个非常简单的脚本,我正在执行其他4个脚本。

第17行引发此错误:TypeError: must be string, not int

这是第17行:

execfile(c)

它执行前两个脚本(a& b)没有问题,但在c上失败。如果我注释掉前两个脚本行,它将成功运行第17行。

有什么想法吗?

整个脚本:

import datetime

today = str(datetime.datetime.today().strftime('%Y-%m-%d %H:%M'))

a = r'\\server\Scheduled_Scripts\PowerBI_part1.py'
b = r'\\server\Scheduled_Scripts\PowerBI_part2.py'
c = r'\\server\Scheduled_Scripts\PowerBI_part3.py'
d = r'\\server\Scheduled_Scripts\PowerBI_part4.py'

print "Starting at " + today

print "Executing part 1..."
execfile(a)
print "Executing part 2..."
execfile(b)
print "Executing part 3..."
execfile(c)
print "Executing part 4..."
execfile(d)

print "Complete at " + today

2 个答案:

答案 0 :(得分:0)

检查不同脚本中变量之间的命名冲突。尝试仅使用a运行它并仅使用b运行它以查看导致问题的那个,然后查看这两个脚本。如果它们都在同一个命名空间中运行,那么你很可能两次使用相同的变量名或函数名,并且应该是一个字符串的东西在前一个脚本中声明为整数。

另外,您是否考虑将所有内容分组到函数中,然后只导入其他脚本?

答案 1 :(得分:0)

c在顶级脚本中声明,因此它自动成为globals()字典的成员。这意味着,如果2个第一个脚本中的任何一个包含行c=1(或任何整数值),则全局c将被覆盖。

由于您不希望下标更改任何全局变量,您可以尝试传递一个新的空字典:

print "Executing part 1..."
execfile(a, {})
print "Executing part 2..."
execfile(b, {})
print "Executing part 3..."
execfile(c, {})
print "Executing part 4..."
execfile(d, {})

由于下标以空的全局字典开头,因此无法再覆盖顶级脚本中的变量