1

我对 zed shaw 的练习 15 有点坚持。实际上我对原始程序没有任何问题,但问题是当我尝试额外的功劳时,他要求我们使用原始输入而不是 argv。

所以,这是我使用的代码

filename=raw_input("enter filename :")
print "here's your file %r" % filename
txt=open(filename)
print txt.read()

当它询问文件名时,我给出路径 e:\python\ex15_sample.txt 我在这一行中收到以下错误-> txt = open(filename) 并且它进一步说没有这样的文件或目录

那么,我该怎么办?

4

3 回答 3

1

你的代码很好。输入文件名时出错。检查该文件是否确实存在。

>>> filename=raw_input('enter filename :')
enter filename :c:\Users\All Users\Autodesk\Revit\Addins\2012\RevitLookup.addin
>>> txt = open(filename)
>>> print txt.read()
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<RevitAddIns>
  <AddIn Type="Application">
    <Assembly>C:\Program Files (x86)\Revit 2012 SDK\RevitLookup\CS\bin\Debug\RevitLookup.dll</Assembly>
    <ClientId>356CDA5A-E6C5-4c2f-A9EF-B3222116B8C8</ClientId>
    <FullClassName>RevitLookup.App</FullClassName>
    <Name>Revit Lookup</Name>
    <VendorId>ADSK</VendorId>
    <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
  </AddIn>
</RevitAddIns>

(呃,这只是我碰巧在我的电脑上放着的一些文件......)

确保在输入文件时不要使用引号 - 或在之后去掉它们!这样做argv可能会起作用,但绝对不是raw_input

编辑:我认为这就是问题所在:您正在输入带引号的文件名(例如当您在资源管理器中右键单击“复制为路径”时得到的)。对于sys.argv,这些被(Python?OS?我认为是 Python ......)删除,但不是raw_input.

于 2012-04-19T09:00:26.613 回答
0

由于您使用的是 Windows,因此您可以尝试/在输入文件名时使用(正斜杠)或使用双反斜杠作为 path-seperator \\

要输入您的文件名,您可以尝试e:/python/ex15_sample.txte:\\python\\ex15_sample.txt.

于 2012-04-19T09:07:58.887 回答
0

我使用以下程序最终让它工作:

print "Type your filename:"

filename = raw_input(">")

txt = open(filename)

print txt.read()

我有点困惑为什么 OP 使用 %r 格式化程序。我没有使用它,我的程序仍然有效。有什么我想念的吗?谢谢。

于 2016-12-05T01:59:11.717 回答