问题描述
我想学习使用Python进行命令行编程。 我在互联网上看到了一个待办事项挑战,并开始通过向网络学习来应对它。挑战在于创建待办事项应用程序的命令行界面。
该挑战的标题为CoronaSafe工程奖学金测试问题。以下是Google Drive上的挑战材料:https://drive.google.com/drive/folders/1SyLcxnEBNRecIyFAuL5kZqSg8Dw4xnTG?usp=sharing
并且在https://github.com/nseadlc-2020/package-todo-cli-task/有一个GitHub项目
在README.md
中,指示我为名为todo
的批处理文件todo.bat
创建符号链接。现在,我的第一个条件是,在没有任何参数的情况下从命令提示符调用符号链接时,它必须打印程序的一些使用提示。最后,我必须使用npm test
命令来测试执行。
一开始我遇到了这个问题,每当我使用print
语句时,我看到每个以新行结尾的字符串的末尾都有一个点·。例如,
import sys
import random
args = sys.argv[1:]
if len(args) == 0:
print('Usage :-', end='
')
print('$ ./todo help # Show usage', end='')
上面的语句在不带参数的情况下执行时会给出输出
Usage :-.
$ ./todo help # Show usage
这里,我注意到第一个print语句以换行符结尾,字符串以中点(·)结尾。然而,对于第二个print
语句,因为我用空字符串覆盖了end参数,所以没有输出换行符,因此不会打印点。查看屏幕截图:
出了什么问题,我怎么才能通过测试?我的程序根本不打印中间点。
推荐答案
问题似乎就在todo.test.js
文件中。
简而言之,Windows和类Unix平台有不同的行尾约定(在Windows中打印一行在末尾添加两个控制字符,而在类Unix系统中只打印一个),而且测试套件似乎只准备好处理类Unix系统的结果。
尝试强制您的Python仅打印Unix换行符,或切换到免费的类Unix系统以运行测试。
或者,重命名todo.test.js
并将其替换为带有DOS换行符的副本。在许多Windows文本编辑器中,您应该能够简单地将文件打开为Unix文本文件,然后另存为...&q;并选择Windows文本文件(如果它提供,则可能选择Windows文本文件,尽管这个术语是错误的,他们应该知道得更清楚);有关许多替代解决方案,例如,请参阅Windows command to convert Unix line endings?(其中许多都生动地说明了Windows的其他一些问题;请谨慎操作)。
这似乎是一个已知问题,如您共享的README.md
中所述:https://github.com/nseadlc-2020/package-todo-cli-task/issues/12(尽管它不准确地将此标记为换行符UTF编码问题;该问题与UTF-8或UTF-16无关)。
另请参阅建议的副本Line endings (also known as Newlines) in JS strings
这篇关于在Python代码的NPM测试中,行终止符在行尾添加圆点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!