我有一个简单的程序,读取数字并按顺序返回:
import sys
myset = set()
arguments = sys.argv[1:]
for x in arguments:
myset.add(int(x.rstrip()))
newset = sorted(myset)
print ("sorted")
for x in newset:
print x
当我键入“pythonpysortints.py公司1 5 6 7 2 6 7 254 2 543“,但是当我尝试类似“pythonpysortints.py公司<;testfile“(当testfile是纯数字行时),除了一些print语句(“sorted”)外,什么都不会出现。你知道吗
有什么想法吗?为了以防万一,我试过rstrip在x上,但似乎什么都没用。你知道吗
或者,除了fourtheye所建议的,您可以运行脚本而无需修改。为此,需要将文件的内容作为参数传递(而不是使用“<;”作为标准输入)。您可以借助
xargs
命令:如果仍要使用
<
重定向,请注意拆分从文件读取的行:您需要阅读
STDIN
,而不是参数:当你这么做的时候
testfile
的内容在标准输入中可用,而不是作为命令行参数。你知道吗因此,您需要使用
raw_input
(如果您使用的是python2.x)或input
(如果您使用的是python3.x)函数来读取数据。你知道吗或者,您可以直接从
sys.stdin
读取,如下所示注意:不需要剥离传递给
int
函数的字符串数据。它将忽略开头和结尾的空格字符,对于您:)让我们稍微改进一下代码。您的意图是只找到唯一的元素并对它们进行排序。所以,不用向集合中添加元素,可以使用集合理解,如下所示
这将获得int类型中的所有唯一元素。接下来,您可以简单地将
sorted
应用于它本身如果您想在新行中打印每一行,就像您在示例中所做的那样,您可以使用
map
和str
函数将排序后的数字转换为字符串,如下所示然后你可以用
\n
把它们连接起来,然后像这样打印出来给你!你的整个程序都在一行。:):)
相关问题 更多 >
编程相关推荐