无法在Python中读取Unix中存在的csv文件

时间:2017-10-24 06:34:27

标签: python csv unix jenkins

我想阅读Unix中某个路径上显示的CSV文件 - /var/lib/Folder/abc.csv

我使用下面的代码来读取此文件,但看起来它没有返回任何行,因此它不会进入 for 循环。

file_path = "/var/lib/Folder/abc.csv"

with open(file_path, newline='') as csv_file:
   reader = csv.reader(csv_file)
   for row in reader:
      logging.debug(str(datetime.datetime.now()) + " Checking rows...")
      logging.debug(str(datetime.datetime.now()) + " Row(" + str(count) + ") = " + row)

CSV文件看起来像 -

"Account ID","Detail","Description","Date created" 

"123456","Customer","Savings","2017/10/24" 

我使用的是Python 2.7

当我在当地尝试时,这是有效的。但我实际上是使用Jenkins运行它,文件放在我的Jenkins主服务器中。我已经使用下面的代码服务器将该文件复制到jenkins - 使用ssh_shell.open(path + fileName,“rb”)作为remote_file:使用open(path + fileName,“wb”)作为local_file:shutil.copyfileobj(remote_file, local_file)在此之后我试图读取文件,它无法正常工作。即不进入那个for循环。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试将row更改为str(row)

file_path = "/var/lib/Folder/abc.csv"

with open(file_path, newline='') as csv_file:
   reader = csv.reader(csv_file)
   for row in reader:
      logging.debug(str(datetime.datetime.now()) + " Checking rows...")
      logging.debug(str(datetime.datetime.now()) + " Row(" + str(count) + ") = " + str(row))

答案 1 :(得分:0)

您可以尝试以下方法:

reader = csv.reader(csv_file, delimiter=',', quotechar='"')

另外,请尝试查看“读者”实际包含的内容。如果未输入for循环,则表示内容未正确读取。尝试从那里开始调试。