如果将文件作为参数传递,python 如何知道在哪里查找文件?

How does python know where to look for a file if you passed it as an argument?

我很想知道 python 是如何知道在哪里可以找到您传递给 function/method 的文件的。例如,我正在读取 csv 文件并在 shell 环境中声明:

python3 readcsv.py test.csv

我猜 python 假设您写了 ./test.csv (意思是当前目录)所以它会在当前目录中查找您的文件。如果是这种情况,python 是否没有默认的搜索路径来正常查找文件,或者您是否必须明确说明在哪里可以找到作为参数传递的文件?

这与python无关。这就是将参数传递给程序时参数的工作方式

例如

在python中你可以这样阅读它们(sys.argv是一个列表)

import sys

print(sys.argv)

# prints ['readcsv.py', 'test.csv']

在 C

#include <stdio.h>

int main(int argc, char **argv)
{
    int i;
    for (i = 0; i < argc; i++)
        printf("\"%s\", ", *(i + argv));
    printf("\n");
}

或在shell

sh

#! /bin/sh

echo $@

是的,您必须明确说明在哪里可以找到作为参数传递的文件。将文件传递给脚本时,所有语言都一样。

除非编写脚本的程序员在脚本中编写了一个例外,以查找超出您为其查找的路径的指定文件。

如果您将参数 test.csv 传递给脚本,它只是一个字符串。与传递 hello45-f 相同。如何解释字符串取决于脚本。

脚本 可以 在某些特定目录中查找匹配文件,如果程序员那样写的话。但这不是默认行为。

如果 Python 脚本将字符串视为文件路径并尝试类似

 filename = sys.argv[1]
 ...
 f = open(filename)

读取文件,然后它将在当前工作目录中查找具有给定名称的文件,而不是在其他任何地方。如果您想查看其他地方,则需要将文件的路径传递到脚本中,而不仅仅是名称。