python 如何向用户询问要与open()一起使用的特定路径?

wmomyfyw  于 2023-04-10  发布在  Python
关注(0)|答案(4)|浏览(93)

我正在尝试用python3 sockets构建一个文件传输系统。我已经连接并发送了,但我现在的问题是,发送的文件必须与程序在同一个目录下,当你收到文件时,它只是将文件放入与程序相同的目录。
如何让用户输入要发送的文件的位置并选择要发送的文件的位置?

lrpiutwd

lrpiutwd1#

我假设您正在使用以下命令打开文件:

open("filename","r")

如果不提供绝对路径,open函数将始终默认为相对路径。因此,如果我想打开一个文件,如/mnt/storage/dnd/5th_edition.txt,我将 * 必须 * 用途:

open("/mnt/storage/dnd/4p5_edition","r")

如果我想把这个文件复制到/mnt/storage/trash/,我也必须使用绝对路径:

open("/mnt/storage/trash/4p5_edition","w")

相反,我决定使用这个:

open("mnt/storage/trash/4p5_edition","w")

如果在我的当前文件夹中没有一个名为mnt的目录和storage/trash目录,那么我会得到一个IOError。如果这些文件夹 * 确实 * 存在于我的当前文件夹中,那么它将最终位于/whatever/the/path/is/to/my/current/directory/mnt/storage/trash/4p5_edition,而不是/mnt/storage/trash/4p5_edition。

sqxo8psd

sqxo8psd2#

由于您说过文件将被放置在程序所在的路径中,因此以下代码可能有效

import os
filename = "name.txt"
f = open(os.path.join(os.path.dirname(__file__),filename))
62lalag4

62lalag43#

就像你说的,文件应该在项目的同一个文件夹中,所以你必须替换它,或者定义一个函数,将正确的文件路径返回到你的open()函数中,这是一种你可以用来减少搜索问题解决方案的时间的方法。
它应该是这样的:

import os

filename = "the_full_path_of_the_fil/name.txt"
f = open(os.path.join(os.path.dirname(__file__),filename))

然后你可以使用f变量的值作为文件所在目录的路径。

w6mmgewl

w6mmgewl4#

这很简单,只需从user获取路径:

subpath = raw_input("File path =  ")
print subpath
file = open(subpath + str(file_name), 'w+')
file.write(content)
file.close()

我想这就是你需要的。

相关问题