Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Eclipse Python插入额外的\';s_Eclipse_Python 3.x_Special Characters - Fatal编程技术网

Eclipse Python插入额外的\';s

Eclipse Python插入额外的\';s,eclipse,python-3.x,special-characters,Eclipse,Python 3.x,Special Characters,背景:我正在使用EclipseSDK4.2.1(Juno)中的python 3.2,我注意到一些奇怪的事情——虽然我的程序在Eclipse中运行得很好,但如果我从文件管理器打开它们,它们总是会以错误关闭。在cmd关闭之前,我设法获得了一个屏幕截图: 该程序似乎在“images”和“Cy.png”之间插入了一个额外的“\”。然而,我不能从我的程序中删除斜杠——在程序中,我使用了两个斜杠,因为需要在字符串中包含斜杠。 我的计划如下: from PIL import Image def pathCo

背景:我正在使用EclipseSDK4.2.1(Juno)中的python 3.2,我注意到一些奇怪的事情——虽然我的程序在Eclipse中运行得很好,但如果我从文件管理器打开它们,它们总是会以错误关闭。在cmd关闭之前,我设法获得了一个屏幕截图:

该程序似乎在“images”和“Cy.png”之间插入了一个额外的“\”。然而,我不能从我的程序中删除斜杠——在程序中,我使用了两个斜杠,因为需要在字符串中包含斜杠。 我的计划如下:

from PIL import Image

def pathConstruction(count, imageName):
    l = []
    l.append('images\\')
    if count == 1:
        l.append('Sepia')
    l.append(imageName)
    imagePath = ''.join(l)
    return imagePath

def grayscale(pix, width, height):
    for col in range(width):
        for row in range(height):
            r,g,b = pix[col, row]
            avg = ((r + g + b) / 3)
            r = int(avg)
            g = int(avg)
            b = int(avg)
            pix[col, row] = r,g,b

def sepia(pix, width, height):
    for col in range(width):
        for row in range(height):
            r,g,b = pix[col, row]
            newR = (r * 0.393 + g * 0.769 + b * 0.189)
            newG = (r * 0.349 + g * 0.686 + b * 0.168)
            newB = (r * 0.272 + g * 0.534 + b * 0.131)
            pix[col, row] = int(newR),int(newG),int(newB)

imageName = input("Please input the full name of your image, including extension: ")
count = 0
imagePath= pathConstruction(count, imageName)
count = count + 1

img = Image.open(imagePath)
pix = img.load()
width, height = img.size

grayscale(pix, width, height)
sepia(pix, width, height)

imagePath = pathConstruction(count, imageName)
img.save(imagePath)
img.show()

问题:在Eclipse之外运行这个程序需要做什么?

只需使用内置的os.path模块即可。它将更简单、更可靠

def pathConstruction(count, imageName):
    import os
    dir = "images"
    if count == 1:
        imageName = "Sepia" + imageName
    return os.path.join(dir, imageName)

只需使用内置的os.path模块。它将更简单、更可靠

def pathConstruction(count, imageName):
    import os
    dir = "images"
    if count == 1:
        imageName = "Sepia" + imageName
    return os.path.join(dir, imageName)


我认为问题不在于目录和文件名之间的额外反斜杠(我认为它只是从字符串的
repr
中看到的),而是在末尾添加的
\r
。我不知道你为什么会从
输入中得到这个值,但是你可以通过调用字符串上的
strip
来删除它。

我认为问题不在于你在目录和文件名之间看到了额外的反斜杠(我认为它只是从字符串的
repr
中看到的),而是在末尾添加的
\r
。我不知道为什么您会从
输入中得到包含在值中的值,但是您可以通过调用字符串上的
strip
来删除它。

您可以将
sys.excepthook
设置为一个函数,该函数记录文件中未捕获的异常。您可以在不等待程序退出的情况下登录到文件,设置:
logging.basicConfig(filename='example.log',level=logging.DEBUG)
,日志:
logging.info('message')
。我确定了实际问题-问题已相应更新。配置日志并在
input()之后添加
logging.DEBUG(repr(imageName))
。您是否在example.log中的图像名称后面看到了
\r
?是的,图像名称后面有一个
\r
,如图所示。您可以将
sys.excepthook
设置为一个函数,该函数记录文件中未捕获的异常。您可以在不等待程序退出的情况下登录到文件,设置:
logging.basicConfig(filename='example.log',level=logging.DEBUG)
,日志:
logging.info('message')
。我确定了实际问题-问题已相应更新。配置日志并在
input()之后添加
logging.DEBUG(repr(imageName))
。你在example.log中的图像名称后面看到了
\r
吗?是的,图像名称后面有一个
\r
,如图所示。这仍然得到了与之前相同的回溯/IOError,插入了第二个“\`。有趣。如果在原始代码中将“images\\”替换为r“images\”,会得到相同的结果吗?如果您是指使用
l.append(r'images\\)
,那么我得到一个错误:
IOError:[Errno 22]无效参数:“images\\\\\Cy.png\r'
否,使用原始字符串(由
r
前缀指示),您只需要一个反斜杠。虽然你所做的结果表明它也不起作用。最后一个问题:如果你使用正斜杠而不是反斜杠会发生什么?这仍然得到了与以前相同的回溯/IOError,插入了第二个“\”。有趣。如果在原始代码中将“images\\”替换为r“images\”,会得到相同的结果吗?如果您是指使用
l.append(r'images\\)
,那么我得到一个错误:
IOError:[Errno 22]无效参数:“images\\\\\Cy.png\r'
否,使用原始字符串(由
r
前缀指示),您只需要一个反斜杠。最后一个问题:如果使用正斜杠而不是反斜杠,会发生什么?你能解释一下对字符串调用
strip
是什么意思吗?
imageName
字符串的末尾会有一个回车符。从
input
(例如
imageName=input(“which”).strip()
,或类似的东西)取回文件后,调用它的
strip
。如果文件名只是有一个额外的
,`它仍然可以工作(至少在Windows上).base
IOError`也不是如果文件名没有引用正确的内容就会得到的结果(如果您提供的名称下没有任何内容,就会得到
FileNotFoundError
)。你能解释一下你在字符串上调用
strip
是什么意思吗?
imageName
字符串的末尾是回车符。
strip
input
(例如
imageName=input(“任意”)。strip()
,或者类似的东西。如果文件名只是有一个额外的
`它仍然可以工作(至少在Windows上)。如果文件名没有引用正确的东西,基本的
IOError`也不是你得到的(如果你给出的名称下没有任何内容,你会得到
FileNotFoundError
)。