如何给出重定向运算符的相对路径?

时间:2016-06-06 14:33:16

标签: python command-line-arguments io-redirection

您可能知道,在运行python脚本并输入:

>> <file-name>

名为&lt;的文件文件名称&gt;将在脚本目录中创建,此脚本的所有stdin输出将定向到此文件。

我想在脚本中添加一个功能(当使用重定向操作符时)将在我选择的另一个目录中提取文件。你知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

只需提供您要将输出重定向到的目录的全名。

echo hello world >> <full path of directory>/<name of output file>

答案 1 :(得分:0)

相对于当前目录创建文件。您可以使用os.chdir更改当前目录。

答案 2 :(得分:0)

当你从一个Sheel运行任何命令并使用>>重定向操作符,或者实际上任何标准|>和类似的操作符时,正在执行重定向是 shell ,而不是Python。

这意味着Python解释器将不具有有关用于重定向的文件名的任何信息。而且,因为文件创建和文件管理是由shell完成的,所以你不能(也不应该)干扰它。我认为你不会被允许,用户也不会期待任何诡计。

如果要根据输出重定向的事实来调整应用程序的行为,请查看sys.stdout.isatty()方法,如果已从中调用脚本,则返回True一个互动的tty。重定向输出后,它将返回False。但是,请注意,有一些场景isatty()将返回false,但原因不是重定向运算符(如管道运算符,或者包含对脚本的调用的第三个脚本)。

当然,您可以避免重定向运算符并为脚本使用一些参数。没有任何进一步的信息,我建议这样做,这样你就可以完全控制行为,你可以记录它(而不是依赖shell的东西,可能是也可能不是便携式和灵活的。)