GNU Parallel with Python Script — переменные командной строки не работают

Это первый раз, когда я пытаюсь выполнить 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, но для печати (TableName) я получаю следующие изображения:

GBPUSD
_DATAD

USDCHF
_DATAF

NZDJPY
_DATAY

Мне странно, что он печатает PairName просто и правильно, но затем PairName не отображается при объединении TableName.

Кроме того, странно, что в конце DATA для каждого из них добавляется дополнительная буква. Похоже, что дополнительная буква в конце DATA — это последняя буква входной переменной. Я не знаю, почему он обрезает 5 букв и как он ставит их в конце ДАННЫХ.

Я напечатал имя таблицы. Я смотрел это видео на странице https://www.youtube.com/watch?v=OpaiGYxkSuQ&ab_channel=OleTange[^] Я попытался переместить concat TableName прямо под PairName. Я напечатал тип PairName, и это строка. Я попытался разделить переменные в текстовом документе с помощью табуляции и запятых вместо следующей строки.

Я попытался присвоить _DATA переменной, а затем объединить два объекта. Но результат тот же: TableEnd = '_DATA' TableName = PairName + TableEnd

Если я удаляю concat PairName+'_DATA' и просто использую PairName только как TableName, тогда он работает правильно.

Извините, если это простой ответ, но я не могу его понять, тем более что в этой ситуации не так много документации / руководств для новичка по GNU Parallel. Спасибо за помощь!


person Jonathan Stearns    schedule 12.02.2021    source источник
comment
Прочтите главы 1+2 zenodo.org/record/1146014. Особенно актуален здесь пункт 2.2: что на самом деле выполняет GNU Parallel? (--dryrun)   -  person Ole Tange    schedule 12.02.2021


Ответы (1)


Входной файл не в формате 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```
person Jonathan Stearns    schedule 12.02.2021