【问题标题】:python file opening in wrong folderpython文件在错误文件夹中打开
【发布时间】:2018-01-27 17:03:50
【问题描述】:

我正在制作掷骰子程序,但遇到了问题。我的程序中有 2 个文件夹:“骰子卷”和“骰子”。骰子卷里面有骰子。 dice roll 还有一个名为 dice roll.py 的 python 文件:

from random import randint
exec(open("./dice/DiceCrop.py").read(), globals())
print(randint(1,6))

dice 文件夹中有一个名为 DiceCrop.py 的 python 文件:

from PIL import Image

dice = Image.open("dice.png")

dice1 = dice.crop((0, 50, 65, 150))
dice1.save("one.png")

dice2 = dice.crop((64, 50, 131, 150))
dice2.save("two.png")

dice3 = dice.crop((130, 50, 196, 150))
dice3.save("three.png")

dice4 = dice.crop((196, 50, 262, 150))
dice4.save("four.png")

dice5 = dice.crop((262, 50, 328, 150))
dice5.save("five.png")

dice6 = dice.crop((328, 50, 394, 150))
dice6.save("six.png")

骰子文件夹还有一个图像文件“dice.png”。但是,当我运行 dice roll.py 时,它说没有像“dice.png”这样的文件。我知道为什么会发生这种情况,但我不知道如何解决它。发生这种情况是因为它在骰子卷文件夹而不是骰子文件夹中打开。如何让它在骰子文件夹而不是骰子文件夹中打开?这是错误消息:

【问题讨论】:

  • 当您从 dice roll.py 文件中的 DiceCrop.py 文件执行代码时,它使用 DiceCrop.py 中的文件路径。但由于 dice roll.py 与 png 文件在不同的文件夹中执行,因此无法找到它们。你应该把所有东西都放在同一个文件夹中,或者在 python 中查看import 来处理相对导入,比如这个。
  • 你到底为什么要exec(open("./dice/DiceCrop.py").read()...???如果你真的需要使用那个文件,import它。

标签: python windows random python-3.5 dice


【解决方案1】:

跟进 Dyz 的建议:

DiceCropy.py

from PIL import Image

def create_dice():
    dice = Image.open("dice.png")

    dice1 = dice.crop((0, 50, 65, 150))
    dice1.save("one.png")

    dice2 = dice.crop((64, 50, 131, 150))
    dice2.save("two.png")

    dice3 = dice.crop((130, 50, 196, 150))
    dice3.save("three.png")

    dice4 = dice.crop((196, 50, 262, 150))
    dice4.save("four.png")

    dice5 = dice.crop((262, 50, 328, 150))
    dice5.save("five.png")

    dice6 = dice.crop((328, 50, 394, 150))
    dice6.save("six.png")

roll.py

from random import randint
from .DiceCrop import create_dice
import os

if not os.path.exists('one.png'):
    create_dice()
print(randint(1,6))

上面所做的是将 DiceCrop.py 文件用作暴露create_dice 接口的python 模块。然后,您可以根据需要在其他 python 文件中重用 create_dice 函数。我们还添加了一个快速测试,以确保我们不会在每次运行时都重新创建骰子图像。祝你好运!

【讨论】:

    猜你喜欢
    • 2014-11-07
    • 2015-03-13
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多