-2

在此处输入图像描述inputs.txt在一个名为输入文件的文件夹中有一个名为 thats的文本文件,task1其中包含一系列我需要在 Python 函数中处理的字符串。

我需要编写一个可以打开此intputs.txt文件并将字符串内容分配给 a 变量的函数S

到目前为止,我有:

def open_func(task1/test-input.txt):   # syntax error thrown here with forward-slash
    S = open(task1/test-input.txt, "r")
    print(S)
    return S

但这会在正斜杠处引发语法错误

输入文件当前包含 acbcbba,我想将其传递给变量 S

我究竟做错了什么?

编辑:

我附上了我尝试过的解决方案的屏幕截图,但我仍然收到“无文件或目录 test-input.txt”错误

干杯

4

2 回答 2

1

您需要使用文件名变量传递给函数。为此,您声明一个变量,其值用引号封装,如下所示:

def open_func(filename):
    f = open(filename, "r")
    content = f.read()
    f.close()
    print(content)
    return content

path = "task1/test-input.txt"
content = open_func(path)
# do something with the file content now

关于编辑:您打开的文件需要位于运行脚本的可访问路径中。因此,如果您的文件夹结构如下所示:

task1/
    script.py
    test-input.txt

如果您从“task1/”中调用脚本,则需要从此路径调用:

path = "test-input.txt

要获取您的工作目录,您可以使用此代码段找出:

import os
print(os.getcwd())
于 2020-08-20T10:40:45.687 回答
1

这里有多个问题:

  1. 定义中括号内的内容必须是参数,而不是字符串(因此将其替换为or之task1/test-input.txt类的东西,因为这是您要打开的内容,而不是函数的参数)。或者filefilenametask1/test-input.txt

  2. 如果要打开一个名为的文件task1/test-input.txt,则需要用引号将其括起来(简单或双引号,我个人更喜欢双引号),所以"task1/test-input.txt"

  3. open函数打开一个文件句柄,而不是文件的内容。你需要调用read()手柄,然后close()它。所以像:

    file = open(filename, "r")
    S = file.read()
    file.close()
    print(S)
    return S
    
  4. 此外,您应该使用with注释中指出的语法,这将上面的内容简化为(因为它会自动close生成句柄):

    with open(filename, "r") as file:
        S = file.read()
    print(S)
    return S
    
于 2020-08-20T10:36:54.763 回答