将文件保存到子目录

时间:2017-02-15 17:02:49

标签: python

我一直在使用刮刀从网站上获取大量的HTML和图片。我的刮刀工作正常,但目录大量填充,导致难以导航。我如何将其保存到子目录? 保存HTML的部分:

t = open(str(current)+".html", 'w+')
t.write(b)
t.close()

保存图像的部分:

urllib.request.urlretrieve(img, page+".gif")

1 个答案:

答案 0 :(得分:5)

您只向我们展示了一些无用的代码,其中说写入子目录很简单,但首先需要创建一个。现在,我只能给你一些基本的例子,因为我不知道你的代码的其余部分是什么样的,希望这里有所帮助!

def create_folder(self, path):
        try:
            if os.path.isdir(path):
                print("Error: The directory you're attempting to create already exists") # or just pass
            else:
                os.makedirs(path)
        except IOError as exception:
            raise IOError('%s: %s' % (path, exception.strerror))
        return None

甚至更容易

os.makedirs("C:\\Example Folder\\")

或在Linux的情况下

os.makedirs('/home/' + os.getlogin() + '/Example Folder/')

然后像往常一样写入它,就像提供子目录的路径一样。

def write(self, path, text):
        try:
            if os.path.isfile(path):
                return None # or print and error, or pass etc...
            else:
                with open(path, 'w') as outFile:
                    outFile.write(text)
        except IOError as exception:
            raise IOError("%s: %s" % (path, exception.strerror))

        return None

在这种情况下,您将路径放在“path”参数中的子目录和包含“text”参数中的文本的变量中。您可以修改此函数以追加,写入字节等。

更新了有关您的评论的信息

使小规模python程序“更多”跨平台的一种非常简单的方法就是执行类似

的操作
if sys.platform == 'win32':
    print('This is windows')
elif sys.platform == 'linux2':
    print('This is some form of linux')

您可以添加它来检查操作系统,然后根据操作系统运行您的块:)

是的,上述写入功能会覆盖文件是正确的,您可以通过将“w”标志更改为“a”来附加文件(添加新文本而不覆盖现有文本)

def append(self, path, text):
        try:
            if os.path.isfile(path):
                with open(path, 'a') as outFile:
                    outFile.write(text)
        except IOError as exception:
            raise IOError('%s: %s' % (path, exception.strerror))
        return None    

进一步更新:

如果您不使用课程,可以删除“self”。

基于你最后的评论“我自己放了什么”我非常强烈建议你暂时放弃你的项目并首先学习python的基础知识......你可以在以下地方找到各种教程。< / p>

https://www.tutorialspoint.com/python/

https://docs.python.org/3/tutorial/

如果您使用的是较旧的版本,您只需更改为您在官方网站上使用的任何一个版本,我祝您好运,但不幸的是,如果不首先了解至少,我无法帮助您基础知识,对不起!

更新: 这是在很长一段时间后出现但我觉得有必要将这些添加到答案中,因为这篇文章最近再次被查看。

os.mkdir('\path\to\dir')
# is also valid
# Python 3+ use the following 
if sys.platform.startswith('linux'):
    print('This is linux')
    #insert code here. We use .startswith('')
    #becuase the version number was depricated 
elif sys.platform.startswith('win'):
    print('This is windows')