Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python子进程可以';找不到csv编写器的输出_Python_Bash_Csv_Subprocess_Gzip - Fatal编程技术网

Python子进程可以';找不到csv编写器的输出

Python子进程可以';找不到csv编写器的输出,python,bash,csv,subprocess,gzip,Python,Bash,Csv,Subprocess,Gzip,我正在从Mongo中提取一些数据,通过Python对其进行清理,并将其写入文本文件以导入Vertica。Vertica无法解析python编写的gzip(不知道为什么),因此我尝试将数据写入csv,并使用bash来gzip文件 csv_filename = '/home/deploy/tablecopy/{0}.csv'.format(vertica_table) with open(csv_filename, 'wb') as csv_file: csv_writer = csv.w

我正在从Mongo中提取一些数据,通过Python对其进行清理,并将其写入文本文件以导入Vertica。Vertica无法解析python编写的gzip(不知道为什么),因此我尝试将数据写入csv,并使用bash来gzip文件

csv_filename = '/home/deploy/tablecopy/{0}.csv'.format(vertica_table)

with open(csv_filename, 'wb') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=',')

    for replacement in mongo_object.find():
        replacement_id = clean_value(replacement, "_id")
        csv_writer.writerow([replacement_id, booking_id, style, added_ts])

subprocess.call(['gzip', 'file', csv_filename])
当我运行这段代码时,我得到了“gzip:file:没有这样的文件或目录”,尽管事实上1)文件是在运行之前立即创建的,2)在运行之前的目录中已经有一个csv副本,因为这是一个反复运行的脚本

这几点让我觉得python以某种方式捆绑了文件,而bash无法查看/访问它。关于如何运行此转换有什么想法吗


谢谢

只需传递
csv\u文件名
,gzip正在查找一个名为
“file”
的文件,该文件不存在,因此它不会出错为
csv\u文件名
文件:

subprocess.call(['gzip',  csv_filename])

gzip没有
文件
参数,您只需传递文件名。

您已经得到了问题的正确答案。。。。但是,您也可以在编写时使用
gzip
模块进行压缩,因此根本不需要调用
gzip
程序。本例假设您使用Python3.x,并且只有
ascii
文本

import gzip

csv_filename = '/home/deploy/tablecopy/{0}.csv'.format(vertica_table)

with gzip.open(csv_filename + '.gz', 'wt', encoding='ascii', newline='') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=',')
    for replacement in mongo_object.find():
        replacement_id = clean_value(replacement, "_id")
        csv_writer.writerow([replacement_id, booking_id, style, added_ts])

当我使用gzip模块时,vertica无法从文件中读取数据。这是一个独立的问题,可能值得提出自己的问题