【问题标题】:Wont allow me to read in .csv file in blender不允许我在搅拌机中读取 .csv 文件
【发布时间】:2014-02-01 14:29:53
【问题描述】:

我在使用 Python 编写脚本时在 Blender 2.69 中遇到了问题。当我尝试读取 csv 文件时,它会抛出错误:

Traceback (most recent call last):
  File "<blender_console>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'CelestialData.csv'

代码是:

import csv
...
starsFile = csv.reader(open('CelestialData.csv','r'))

任何帮助将不胜感激。

【问题讨论】:

  • 使用CelestialData.csv 的显式路径(例如C:\Users\Ollington\Documents\CelestialData.csv/home/Ollington/CelestialDatacsv,具体取决于您选择的操作系统)。
  • 即使使用显式路径,它也会抛出同样的错误,真的被这个难住了,感觉我什么都试过了!
  • 如果您认为文件存在而 Python 认为不存在,那么 Python 很可能是正确的。在该行之前,添加import osprint os.getcwd() 以查看您所在的目录,并添加print os.listdir(".") 以查看那里的文件。
  • 您的文件路径是否使用了原始字符串?如果没有,您是否将反斜杠加倍(假设是 Windows 系统)?
  • 我设法解决了这个问题,似乎我没有使用 100% 正确的显式路径。

标签: python file csv path


【解决方案1】:

早在 80 年代微软就选择使用"\" 字符进行目录分隔,而不是其他操作系统中常用的"/"

问题在于 "\" 字符已经在 C 语言中使用,并且该行为在 Python 中被复制,作为字符串中的转义字符。因此,每当 Python 表达式找到包含例如序列 "\t" 的字符串时,该字符串被解释为单个字符,而不是分隔的 "\""t" 字符(&lt;tab&gt; 编码为数字“9 ")。

Python 有 3 种方法来处理这个问题:

  1. 使用“/”字符分隔目录和文件,无论是在 Windows 上
  2. 使用双正斜杠,每次出现正斜杠时(因此,"\\t" 代替 "\t",或
    "\\Documents\\CelestialData.csv" 代替 "\Documents\CelestialData.csv"
  3. 使用 r 前缀作为字符串的引号 - 这样,Python 会处理以下字符串 作为“原始”,并且其中的所有"\" 都按字面意思处理,而不是解释为 转义下一个字符。例如:r"\Documents\CelestialData.csv"

我认为第一个选项对你来说会更容易。

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 2015-04-16
    • 1970-01-01
    • 2020-01-06
    • 2019-12-22
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多