我正在执行命令操作系统并且可以通过两种不同的方式获取所需的命令:从用户输入或从文件。在
# Code works fine with this
filename = raw_input('Enter a filename:' )
# but it doesn't work if I do this:
f = open("userinput.txt").readlines()
filename = f[1]
如果我现在打印文件名,我得到的输出完全相同。但是当文件名被传递时操作系统它只在最上面的情况下有效。另一个案子打印了一些我没有要求的数据。我会张贴完整的源代码,但文件是巨大的!这是一只鹬。在
^{2}$
电流行为
readlines()
返回末尾带有\n
的行。因此,您将运行的代码拆分为两个单独的命令。假设您的文件是unsorted_input.txt
,那么,这将运行:…因此,它将
sort
的输出写入stdout,并将orderedfile.txt
截断为空。在最小的可能的修复方法只是从文件名中删去尾随的换行符,但这会给您带来很多其他的错误:带有空格的文件名、带有文字引号的文件名、带有命令替换或其组合的文件名将使原方法陷入混乱。在
首选方法(无需外壳)
正确的实现应该更像:
^{pr2}$首选方法(安全外壳使用)
注意,在本例中,我们从代码中传递文件名带外,并在使用它们的地方引用扩展名。在
相关问题 更多 >
编程相关推荐