我正在构建一个简单的帮助脚本,用于将代码库中的几个模板文件复制到当前目录.但是,我没有存储模板的目录的绝对路径.我确实有一个来自脚本的相对路径,但是当我调用脚本时,它将其视为相对于当前工作目录的路径.有没有办法指定这个相对url来自脚本的位置?
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的帮助.我正在尝试打开一个文件,如果该文件不存在,我需要创建它并打开它进行写入.到目前为止我有这个:
#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 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中,以下语句不起作用:
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)
看起来我需要修改文件模式.文件打开模式的深层复杂性是什么?
我遇到一个小问题:在使用该模式的函数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:无视这个问题,问题解决了.在"示例"之后创建了第二个目录,因此它无法正常工作.愚蠢的错误.
我有一个将运行多次的脚本,该脚本的主函数中的第一行是这样的:
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标准的,并且容易出现竞争条件。我怎样才能正确地做到这一点?
我正在创建一个包含逐行记录的日志文件.
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)
如果文件不存在,代码将失败
标题说全部.
我的代码:
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 ×9
file ×2
createfile ×1
delete-file ×1
encoding ×1
file-io ×1
path ×1
python-3.x ×1
selenium ×1