这是对这个问题的后续行动.我想知道你是否可以\\.\PhysicalDriveN
在写入模式下访问原始设备(即),如果是这种情况,如何.
使用Linux,只需使用例如open("/dev/sdd", "w+")
(假设脚本以root权限运行)即可实现写访问.我假设Mac OS的行为类似(与/dev/diskN
输入文件一样).
在Windows下(使用相应的路径)尝试相同的命令时,它会失败,并显示以下错误:
IOError: [Errno 22] invalid mode ('w+') or filename: '\\\\.\\PhysicalDrive3'
Run Code Online (Sandbox Code Playgroud)
但是,当尝试从PhysicalDrive 读取时,它确实有效(即使读取正确的数据).shell在Windows 7下以管理员权限运行.
有没有其他方法可以使用python完成此任务,同时仍然保持脚本尽可能与平台无关?
我进一步了解了python为文件处理提供了哪些方法,并且在os.open中偶然发现了.使用os.open(drive_string, os.O_WRONLY|os.O_BINARY)
返回没有错误打开PhysicalDrive .到现在为止还挺好.现在我可以选择使用os.write直接写入此文件描述符,或者使用os.fdopen获取文件对象并以常规方式写入它.可悲的是,这些可能性都不起作用.在第一种情况(os.write()
)中,我得到了这个:
>>> os.write(os.open("\\\\.\\PhysicalDrive3", os.O_WRONLY|os.O_BINARY), "test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我可以创建一个具有写权限的文件对象,但写入本身失败(好吧,在使用后强制执行.flush()
):
>>> g = os.fdopen(os.open("\\\\.\\PhysicalDrive3", os.O_WRONLY|os.O_BINARY), "wb")
>>> g.write("test")
>>> g.flush()
Traceback (most …
Run Code Online (Sandbox Code Playgroud) 这是我的PHP/MySQL脚本:
<?php
mysql_connect('localhost', 'root', 'test') or die (mysql_error());
mysql_select_db('info1') or die (mysql_error());
$result = mysql_query("SELECT * from automobiles");
//Table starting tag and header cells
while($row = mysql_fetch_array($result)){
//Display the results in different cells
echo "<dd><dl><img src=' " . $row['image'] . " '>" . $row['manufacturer'] ." " . $row['model'] . "</dd></dl>";
echo "<dd><dl>" . $row['carinfo'] . "</dd></dl>";
}
//Table closing tag
echo "</table>";
?>
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,它会工作:
{$myvariable}
Run Code Online (Sandbox Code Playgroud)
使用大括号对变量进行编码是一个好主意,或者:
echo " . $row['variable']. "
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏,谢谢!