GNU Parallel with Python Script - 命令行变量不起作用

GNU Parallel with Python Script - command line variables not working

这是我第一次尝试 python 在 GNU 并行中执行。

我有下面的 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 末尾的额外字母是输入变量的最后一个字母。我不知道为什么它会砍掉 5 个字母以及它是如何把它放在数据的末尾的。

我打印了表名。 我在 https://www.youtube.com/watch?v=OpaiGYxkSuQ&ab_channel=OleTange[^] 观看了这个视频 我尝试将 TableName concat 移动到 PairName 的正下方 我打印了 PairName 的类型,它是一个字符串 我尝试用制表符和逗号分隔 txt 文档中的变量而不是下一行

我尝试将“_DATA”分配给一个变量,然后连接两个对象。但它有相同的结果: TableEnd = '_DATA' TableName = PairName + TableEnd

如果我删除 PairName+'_DATA' 的连接并仅将 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```