Python dictionaries are indeed a good tool for that.
Here is a script that takes 2 arguments (the file containing the counts and the file containing the genome length info), and prints the input data, with an added column containing coverage:
counts_fname = sys.argv
genome_lengths_fname = sys.argv
I would do it in R:
tab1 <- read.table('file1.tsv', header = T, stringsAsFactors = F)
tab2 <- read.table('file2.tsv', header = T, stringsAsFactors = F)
merged_tav <- merge(reads_tab, genome_len_tab)
merged_tav$z <- merged_tav$x / merged_tav$y
ID Info Info2 x y z
1 E81292 info info 10200 13101 0....
Assuming your user is in the group permitted to use docker:
docker pull quay.io/biocontainers/tophat:2.1.1--py27_3
nohup docker run -v /some/path:/data quay.io/biocontainers/tophat:2.1.1--py27_3 tophat2 ... &
The only thing to remember is to mount everything you'll need into the docker container (/data in the example above). If you need to debug things ...