如何解决GNU Parallel with Python Script - 命令行变量不起作用
这是我第一次尝试在 GNU 并行中执行 python。
我有以下 python 脚本。我试图与加载变量的 text.txt 文档并行运行它。文本文档的每一行都有一个变量。
我使用以下代码执行以下脚本:
parallel --bar -a PairNames.txt python3 CreateDataTablePythonScriptv2.py
这是正在执行的python脚本:
import sqlite3
import sys
PairName = sys.argv[1]
print(PairName)
DTBLocation = '//mnt//c//Users//Jonathan//OneDrive - Mazars in Oman//Trading//Systems//FibMatrix//Testing Trade Analysis//SQLite//Trade Analysis.db
connection = sqlite3.connect(DTBLocation)
cursor = connection.cursor()
TableName = PairName+'_DATA'
print(TableName)
cursor.execute("""CREATE TABLE IF NOT EXISTS {}
(
Date_Time INTEGER,Open REAL,Max_60m_Box REAL
)""".format(TableName))
connection.commit()
connection.close()
它正确执行第一个变量就好了。但是剩余的变量确实从 PairName 的打印命令中正确打印,但是对于 print(TableName) 我得到以下显示:
GBPUSD
_DATAD
USDCHF
_DATAF
NZDJPY
_DATAY
对我来说很奇怪,它正确且正确地打印了 PairName,但是在连接 TableName 时没有显示 PairName。
此外,奇怪的是,每个字母都在 DATA 的末尾添加了一个额外的字母。 DATA 末尾的额外字母似乎是输入变量的最后一个字母。我不知道为什么它会砍掉 5 个字母以及如何将它放在 DATA 的末尾。
我打印了表名。 我在https://www.youtube.com/watch?v=OpaiGYxkSuQ&ab_channel=OleTange[^]观看了这个视频 我尝试将 TableName concat 移到 PairName 的正下方 我打印了 PairName 的类型,它是一个字符串 我尝试用制表符和逗号而不是下一行分隔 txt 文档中的变量
我尝试将“_DATA”分配给一个变量,然后连接两个对象。但它有相同的结果: TableEnd = '_DATA' TableName = PairName + TableEnd
如果我删除 PairName+'_DATA' 的 concat 并且只使用 PairName 作为 TableName,那么它可以正常工作。
抱歉,如果这是一个简单的答案,但我无法弄清楚,尤其是因为在这种情况下,GNU Parallel 新手没有太多文档/教程。感谢您的帮助!
解决方法
输入文件不是 DOS 格式(即以 CRLF 而不仅仅是 LF 结尾)?我使用 FILE 命令检查了这一点:
$ file test.txt
test.txt: ASCII text,with CRLF line terminators
$
由于是CRLF(DOS格式),所以我用tr进行了转换:
Copy Codetr -d '\r' < input.file > output.file```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。