Python:SyntaxError:关键字arg之后的非关键字

时间:2013-01-09 22:35:18

标签: python

当我运行以下代码时

def regEx1():
  os.chdir("C:/Users/Luke/Desktop/myFiles")
  files = os.listdir(".")
  os.mkdir("C:/Users/Luke/Desktop/FilesWithRegEx")
  regex_txt = input("Please enter the website your are looking for:")
  for x in (files):
    inputFile = open((x), encoding = "utf8", "r")
    content = inputFile.read()
    inputFile.close()
    regex = re.compile(regex_txt, re.IGNORECASE)
    if re.search(regex, content)is not None:
      shutil.copy(x, "C:/Users/Luke/Desktop/FilesWithRegEx")

我收到以下错误消息,指出for循环后的第一行。

      ^

SyntaxError: non-keyword arg after keyword arg

导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:75)

这就是它所说的:

inputFile = open((x), encoding = "utf8", "r")

您已将encoding指定为关键字参数,但将"r"指定为位置参数。关键字参数后不能有位置参数。也许你想做:

inputFile = open((x), "r", encoding = "utf8")

答案 1 :(得分:2)

要真正弄清楚这一点,这是我的初学者答案: 您以错误的顺序输入了参数。
关键字参数具有以下样式:

file

应定义一个固定参数:True,False等。 非关键字参数不同:

nullable=True, unique=False

此语法错误要求您首先将name="Ricardo", fruit="chontaduro" 及其所有类型(非关键字)放在 之前,例如name="Ricardo"