【问题标题】:xlrd python does not work - "syntax error"xlrd python 不起作用 - “语法错误”
【发布时间】:2014-11-29 22:47:22
【问题描述】:

我正在尝试熟悉 xlrd,所以我将一个示例复制到我的 IDE (spyder) 中。我正在使用 python(x,y) 2.7.6.1

这是我的例子

import xlrd
import os

filename=os.path.join("C:/","Desktop/myfile"):
book = xlrd.open_workbook(filename)
print "The number of worksheets is", book.nsheets
print "Worksheet name(s):", book.sheet_names()
sh = book.sheet_by_index(0)
print sh.name, sh.nrows, sh.ncols
print "Cell D30 is", sh.cell_value(rowx=29, colx=3)
for rx in range(sh.nrows):
    print sh.row(rx)

如您所见,我听取了关于 SE here 的建议,但仍然无法正常工作(语法错误)。正如here所建议的那样,我已经按照接受的答案中给出的方式在 os.path.join() 中写了一些东西。

这是错误日志:

runfile('C:/Users/PC/.spyder2/.temp.py', wdir=r'C:/Users/PC/.spyder2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "C:/Users/PC/.spyder2/.temp.py", line 12
    filename=os.path.join("C:/","/Users/PC/Desktop/myfile"):
                                                      ^

SyntaxError: 无效语法

更新 现在,当我用“join”从行尾删除冒号时,我得到了另一个语法错误。就是这样:

runfile('C:/Users/PC/.spyder2/.temp.py', wdir=r'C:/Users/PC/.spyder2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
 File "C:/Users/PC/.spyder2/.temp.py", line 13, in <module>
    book = xlrd.open_workbook(filename)
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 394, in open_workbook
    f = open(filename, "rb")
IOError: [Errno 2] No such file or directory: 'C:/Users/PC/Desktop/myfile'

我做错了什么?我应该怎么做?

【问题讨论】:

  • 发布语法错误文本。

标签: python excel xlrd spyder pythonxy


【解决方案1】:

它是连接行末尾的冒号。它不应该在那里。

【讨论】:

  • 你是对的。我删除了冒号,现在没有提到语法错误。现在我得到另一个语法错误。 (更新我的问题)
  • 那个告诉你问题出在哪里。您的文件名不正确。没有这样的文件。 (您是否缺少 .xls 扩展名?)
【解决方案2】:

语法错误是第一行末尾不应该有:

“没有这样的文件或目录”错误是因为桌面不是位于“C:/Desktop”的目录。实际上有不止一个目录的内容显示在桌面上,但您可能想要的是“C:/Users/USERNAME/Desktop/”,其中 USERNAME 当然是您在机器上的用户名。

如果你想访问一般的主目录(即不仅仅是你的,你想要运行脚本的人的主目录),那么你可以访问 HOMEDRIVE 和 HOMEPATH 环境变量。

【讨论】:

  • 现在,我与 join() 的行如下所示: filename=os.path.join("C:/","/Users/PC/Desktop/myfile"): 我仍然得到语法错误。
  • 你根本不需要加入.. 只需让它 filename="C:/Users/USERNAME/Desktop/myfile.xls" # 或其他任何东西
  • @user46147:哦,对不起,我认为你得到的错误是标题“没有这样的目录”。语法错误是行尾不应该有冒号,我会将其添加到我的答案中。一开始我没有发现。
  • 这不是我说的吗?
  • @dementedhedgehog:是的,在我将关于冒号的编辑发布到我的答案之前 7 秒,您发布了关于冒号的答案。我希望我能打字快到抄袭你。
【解决方案3】:

正如 demented Hedgehog 和 Steve Jessop 所建议的那样,我必须转换以下行

filename=os.path.join("C:/","Desktop/myfile"):

进入

filename=os.path.join("C:/","/Users/PC/Desktop/myfile.xls")

所以我只需要删除冒号,写入正确的目录并写入 myfile.xls 而不仅仅是 myfile。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 2012-11-21
    • 1970-01-01
    • 2018-10-07
    • 2015-03-28
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多