相关疑难解决方法(0)

Python中的相对路径

我正在构建一个简单的帮助脚本,用于将代码库中的几个模板文件复制到当前目录.但是,我没有存储模板的目录的绝对路径.我确实有一个来自脚本的相对路径,但是当我调用脚本时,它将其视为相对于当前工作目录的路径.有没有办法指定这个相对url来自脚本的位置?

python path relative-path

204
推荐指数
9
解决办法
34万
查看次数

正确的方法来定义Python源代码编码

PEP 263定义了如何声明Python源代码编码.

通常,Python文件的前两行应该以:

#!/usr/bin/python
# -*- coding: <encoding name> -*-
Run Code Online (Sandbox Code Playgroud)

但我看到很多文件以:

#!/usr/bin/python
# -*- encoding: <encoding name> -*-
Run Code Online (Sandbox Code Playgroud)

=> 编码而不是编码.

那么声明文件编码的正确方法是什么?

是否允许编码,因为使用的正则表达式是懒惰的?或者它只是声明文件编码的另一种形式?

我问这个问题是因为PEP没有谈论编码,它只是谈论编码.

python encoding

156
推荐指数
4
解决办法
8万
查看次数

如果文件不存在,请创建一个文件

我需要Python的帮助.我正在尝试打开一个文件,如果该文件不存在,我需要创建它并打开它进行写入.到目前为止我有这个:

#open file for reading
fn = input("Enter file to open: ")
fh = open(fn,'r')
# if file does not exist, create it
if (!fh) 
fh = open ( fh, "w")
Run Code Online (Sandbox Code Playgroud)

错误消息表明该行存在问题if(!fh).我可以exist在Perl中使用吗?

python createfile

46
推荐指数
7
解决办法
16万
查看次数

Selenium下载完整的html页面

我正在学习使用Python Selenium和BeautifulSoup进行网页抓取.目前,我正试图抓住Google搜索趋势的热门搜索http://www.google.com/trends/hottrends#pn=p5

这是我目前的代码.但是,我意识到没有下载完整的HTML,我只有最近几个日期的内容.我该怎么做才能解决这个问题?

from selenium import webdriver
from bs4 import BeautifulSoup

googleURL = "http://www.google.com/trends/hottrends#pn=p5"

browser = webdriver.Firefox()
browser.get(googleURL)
content = browser.page_source

soup = BeautifulSoup(content)
print soup
Run Code Online (Sandbox Code Playgroud)

python selenium

14
推荐指数
1
解决办法
2万
查看次数

Python文件模式细节

在Python中,以下语句不起作用:

f = open("ftmp", "rw")
print >> f, "python"
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

但是使用以下代码它可以工作:

g = open("ftmp", "r+")
print >> g, "python"
Run Code Online (Sandbox Code Playgroud)

看起来我需要修改文件模式.文件打开模式的深层复杂性是什么?

python file-io

12
推荐指数
2
解决办法
2万
查看次数

Python3.4:使用模式'w'打开文件仍然给我FileNotFound错误

我遇到一个小问题:在使用该模式的函数open()'w',所有文档都说如果文件不存在则创建该文件.不幸的是,在我看来,我FileNotFound出于某种原因出错了.

with open(newFileName, 'w') as newFile:
    #CODE
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'path of file I have specified'
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?提前致谢!

编辑:对于那些询问目录是否存在的人,我对代码做了一些小改动,可能会显示它确实是一条好路径.

if not os.path.exists("example"):
    os.makedirs("example")

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

newFileName = "example/restOfPath"
newFileName = os.path.join(BASE_DIR,newFileName)

with open(newFileName, 'w') as newFile:
Run Code Online (Sandbox Code Playgroud)

我仍然收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'correctPathToDirectory/example/restOfPath'
Run Code Online (Sandbox Code Playgroud)

EDIT2:无视这个问题,问题解决了.在"示例"之后创建了第二个目录,因此它无法正常工作.愚蠢的错误.

python file python-3.x

10
推荐指数
1
解决办法
8280
查看次数

如果文件不存在则创建,否则不执行任何操作

我有一个将运行多次的脚本,该脚本的主函数中的第一行是这样的:

def main():
    users_csv_file_init()
Run Code Online (Sandbox Code Playgroud)

这个函数应该做的是创建一个 CSV 文件并附加列的名称,如果这样的文件不存在,如果存在,它不应该执行任何操作。我写的是这样的:

def users_csv_file_init():
    with open("users.csv", 'a+') as output_file:
        writer = csv.writer(output_file)
        writer.writerow(["userid", "username", "fname", "lname", "uuid"])
Run Code Online (Sandbox Code Playgroud)

这会失败,因为每次我运行脚本时它都会创建一个新行(列的名称),并且这是有道理的,因为a+如果文件不存在则创建文件并以附加模式打开它。但我无法更改为w+任何一个,因为这会删除文件中以前的所有内容。从 , only的模式来看open(),如果文件不存在,则似乎创建该文件。w+a+

我可以手动检查文件是否存在,如下所示:

def users_csv_file_init():
    if not os.path.exists("users.csv"):
        with open("users.csv", 'w') as output_file:
            writer = csv.writer(output_file)
            writer.writerow(["userid", "username", "fname", "lname", "uuid"])
Run Code Online (Sandbox Code Playgroud)

我被告知这样做是不符合Python标准的,并且容易出现竞争条件。我怎样才能正确地做到这一点?

python

5
推荐指数
1
解决办法
3019
查看次数

检查文件是否存在然后追加记录

我正在创建一个包含逐行记录的日志文件.

1-如果文件不存在,则应创建文件并追加标题行和记录2-(如果存在),检查timeStamp第一行中的文本.如果存在,则附加记录,否则添加标题列并记录自身

我试过w,a和r +; 没有什么对我有用.以下是我的代码:

logFile = open('Dump.log', 'r+')
datalogFile = log.readline()
if 'Timestamp' in datalogFile:
    logFile.write('%s\t%s\t%s\t%s\t\n'%(timestamp,logread,logwrite,log_skipped_noweight))
    logFile.flush()
else:
    logFile.write('Timestamp\t#Read\t#Write\t#e\n')
    logFile.flush()
    logFile.write('%s\t%s\t%s\t%s\t\n'%(timestamp,logread,logwrite,log_skipped))
    logFile.flush()
Run Code Online (Sandbox Code Playgroud)

如果文件不存在,代码将失败

python

3
推荐指数
1
解决办法
1615
查看次数

删除文件(如果存在).如果没有,请创建它

标题说全部.

我的代码:

 try:
        os.remove("NumPyResults.txt")

 except IOError:

        with open("NumPyResults.txt", 'a') as results_file:
            outfile = csv.writer(results_file)
            outfile.writerow(.......)
Run Code Online (Sandbox Code Playgroud)

它附加的原因是因为它处于一个函数中并被多次调用.因此,每次运行程序时,我都想要一个新文件,删除旧文件并编写新文件.

但是,这不会创建新文件.我还在我运行的目录中创建了该文件,它也没有删除它.

我明白了

WindowsError: [Error 2] The system cannot find the file specified: 'NumPyResults.txt'
Run Code Online (Sandbox Code Playgroud)

python error-handling file delete-file

3
推荐指数
1
解决办法
4946
查看次数