如果将文件作为参数传递,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
传递给脚本,它只是一个字符串。与传递 hello
或 45
或 -f
相同。如何解释字符串取决于脚本。
脚本 可以 在某些特定目录中查找匹配文件,如果程序员那样写的话。但这不是默认行为。
如果 Python 脚本将字符串视为文件路径并尝试类似
filename = sys.argv[1]
...
f = open(filename)
读取文件,然后它将在当前工作目录中查找具有给定名称的文件,而不是在其他任何地方。如果您想查看其他地方,则需要将文件的路径传递到脚本中,而不仅仅是名称。
我很想知道 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
传递给脚本,它只是一个字符串。与传递 hello
或 45
或 -f
相同。如何解释字符串取决于脚本。
脚本 可以 在某些特定目录中查找匹配文件,如果程序员那样写的话。但这不是默认行为。
如果 Python 脚本将字符串视为文件路径并尝试类似
filename = sys.argv[1]
...
f = open(filename)
读取文件,然后它将在当前工作目录中查找具有给定名称的文件,而不是在其他任何地方。如果您想查看其他地方,则需要将文件的路径传递到脚本中,而不仅仅是名称。